Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Java ile ilgili bir sorun(Deitel `den bir ornek)


Kithnos

Öne çıkan mesajlar

Arkadaslar bir kac gun sonrasina bir odev yetistirmem gerekiyor, bir txt dosyasini database olarak kullanan bir program yaziyoruz(RandomAccessFile olayini kullanmak gerekyir yani..),Deitel den okuyarak gitmek istedim ve ornek kodlarini kullaniyorum , benim istedigime cok yakin bir ornekten gitmis fakat ioexception a giriyor deitel amcanin hazirladigi ornek.Ozellikle daha once kitabi okumus olan arkadaslar daha iyi yardimci olabilirler sanirim,kitap elinde bulunmayanlar icin , kodlari upload edicem,zaten siz de run edince goruceksiniz hatayi , nedendir bi bulabilirsnz cok sevinicem.


Deitel`in .java olarak kodlari
Link to comment
Sosyal ağlarda paylaş

Benim gördüğüm tek hata


com.deitel.jhtp6.ch14.RandomAccessAccountRecord;


gibi


com.deitel.*


paketlerini bulamaması. O paketlerin de kitapla verilen cd ile birlikte gelmiş olması lazım. Göremediğim başka bir sorun varsa da açıklaman gerekecek yardımcı olabilmem için.

Sailor: Niye olmasın 1 dakikamı aldı anca. :)
Link to comment
Sosyal ağlarda paylaş

he o tarz hatalari ztn kaldirmistim , bilmem ne proccessertest gibi bi class olmasi lazim onu run edince program calisiyor normal,yani import larda falan bi sorun yok,CD den degisik klasorlerden ciktigi icin o dedigin hatalar oluyor onlari actigim projeye gore isimlendiriorm cnm o kadar da deil :) eclipse kendi hallediyor ztn onlari... Normal program calistiktan sonra, Add new record diyince tek tek soruyor ya numara,isim ,s isim,balance diye , onlari aldiktan sonra " Error writing the file" diyor , onu print eden ioexception a dusuyor yani..Nedendir niye dusuyor,nasil cozerim o olayi anlayamadim.son 2 gun bu kod u bi sekilde pati halkiylan editlesek guzel olcak,elimde konuyu en ii anlatan kitap bu onunda kodlari calismiyor ne konuyu adam gibi ogrenebilliorm ne de kodu editleyebiliorm :D
Link to comment
Sosyal ağlarda paylaş

Oyle bi dosya yok zaten ( yaratmaya calistidi .dat veya .txt iste her neyse onu diyosun dimi )... Ama yaratiyo icine yazarken IOException a girio sanirim ki Error writing to file dio ( bu msj ioexception da print edilmis ) dosya 0 kb de olsa gorunuo , ici bos ama yaratilmis sonucta...Valla Cava bilenler usenmezde bi incelerse cok makbule gecer yaw :)
Link to comment
Sosyal ağlarda paylaş

Nerde hata veriyor tam olarak yazsan bir de.. Bahsettiğim paketler olmadığı için çalıştıramıyorum programı. Hatanın nerde olduğunu bilsem bir ihtimal çıkartırım bir şeyler.

Hangi exception handler'a atlıyor? Hangi satır exception'a neden oluyor? Dosya ismi ve satır söyle.
Link to comment
Sosyal ağlarda paylaş

yannıs mı biliorm bilmiorm ama
file = new RandomAccessFile( fileName, "rw" );

satırı yeni bi file yaratmıo?

TransactionProcessor classında
dataFile = new FileEditor( "clients.dat" );
dio. clients.dat die bi dosyamız olmalı ki fileEditor gitsin acsın, ama programı ilk calıstırdıgımızda boyle bi dosya yaratmıo, boyle bi dosya olmadıgı icin de error verio diorm ben =)
Link to comment
Sosyal ağlarda paylaş

Mirage o import satirini silersen program calisicak , menu karsina gelicek.. ama ben yine de tam olarak upload ediyorum deitel`in ch14 ( chapter 14) teki butun class larini ..

Dosya olusuyor arkadaslar , sorun yazmada,ztn yazmadan once dikkat ederseniz dosyayi "rw" okunur ve yazilabilir sekidle yaratiyor.Zaten workspace inize yani calistiginiz yere bakarsaniz clients.dat dosyasyi olusuyor ama 0 kb ..

chapter 14 un butun class lari
Link to comment
Sosyal ağlarda paylaş

Kodlara baktım biraz. Sorunla ilgili bir şey demeden önce şunu söyliyeyim. Kodların stili, anlaşılabilirliği KÖTÜ. Açıkcası bu kodlarla java öğrenmeye çalışmanın yarardan çok zarar vereceğini düşünüyorum. Ben olsam o kitabı hızla elimden atardım. Zira bu kod kesinlikle örnek kod olabilecek seviyede değil bence.

Soruna gelirsek... Yeni bir Record yaratmadan önce, üretmek istediğin numaraya sahip bir account olup olmadığını kontrol etmek istiyor. Bu amaçla şöyle bir kod kullanmış (FileEditor.java, satır 68):


(*)
RandomAccessAccountRecord record = getRecord( accountNumber );

if ( record.getAccount() != 0 )
throw new IllegalArgumentException( "Account already exists");


Daha sonra
FileEditor.getRecord(int accountNumber)
metodu içinde


file.seek( ( accountNumber - 1 ) * randomAccessAccountRecord.SIZE );


satırıyla dosya içinde ileri gidiyor. Dosya başlangıçta boş olduğu için, ne kadar ileri giderse gitsin dosyanın sonuna ulaşmış oluyor. Dolayısıyla
RandomAccessAccountReport.read(RandomAccessFile file)
metodu içindeki


setAccount( file.readInt() );


satırındaki,
file.readInt()
metodu EOFException fırlatıyor. EOFException, IOException'dan türeyen bir exception, ve adından da anlaşabileceği gibi, dosyanın sonuna geldiğini ve int'i okuyamayacağını bildiriyor.

Kodu hazırlayan arkadaş, EOFException yakalamak yerine, IOException içinde EOFException'ı da yakalayıp "Error writing to file" gibi saçma bir hata mesajı koymuş. Aslında hatanın yazmak ile hiç bir ilgisi yok.

Neyse.. sonuç olarak dosya yazmakta sorun yok. Sadece account'ın daha önceden açılmış olup olmadığını anlamak için metodla biraz oynaman lazım. (*) ile işaretlediğim satırları silersen program çalışıyor. Ama aynı numarayla account açma kontrolünü silmiş oluyorsun. Onu düzeltmek de sana kalmış.
Link to comment
Sosyal ağlarda paylaş

Kodlarin sahibi Deitel , Deitel`in java kitabi ve ornekleri acisindan ustad olarak bilinir ama biz de ona guvendik,OOP ( object oriented programming ) mantiginda yazar butun orneklerini ,biraz kafa karistirici oluyor orasi oyle tabi :) Ornek kod uzerinden gitmemin sebebi ise projenin kisitli zamanda olmasi,hoca malesef adam gibi ogrenip,sindirip,ornek yapip ondan sonra projeye gecicek kadar zaman tanimadi.
Ilgilendigin icin cok tesekkru ederim bu arada Mirage , zahmet verdik valla , simdi dedigin sekilde biraz oynicam kodlarla,olumlu/olumsuz yine burdan yazarim bisey.
Link to comment
Sosyal ağlarda paylaş

OOP mantığında yazdığı doğrudur, fazla incelemedim kodu. Ama kod stili bence kötü. Fazlasıyla code smell içeriyor. Code smells dediğim ise kodun kalitesini, okunabilirliğini, bakım kolaylılığını düşüren etkenler. Detaylı bilgi için:

http://en.wikipedia.org/wiki/Code_smell
http://www.codinghorror.com/blog/archives/000589.html
http://www.google.com/search?q=code+smells&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...