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)


Öne çıkan mesajlar

Mesaj tarihi:
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
Mesaj tarihi:
linkteki dosyaları indirip compile etmeye çalışıp hataları görecek, sonra da çözüm üretip buraya yazacak adam yoktur herhalde pek fazla :) hata mesajını, kodun gerekli kısımlarını falan yazsan daha fazla yardım alabilirsin.
Mesaj tarihi:
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. :)
Mesaj tarihi:
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
Mesaj tarihi:
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 :)
Mesaj tarihi:
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.
Mesaj tarihi:
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 =)
Mesaj tarihi:
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
Mesaj tarihi:
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ış.
Mesaj tarihi:
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.
Mesaj tarihi:
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
×
×
  • Yeni Oluştur...