Java hakkında bir bilgim yok fakat , değeri belli olmayan a için for için de koşul yaptırtmaya çalışıyorsun , büyük ihtimalle nedeni odur , java ilk değeri atanmayan sayıyı neye eşitliyor bence onu araştır. i için ilk değer vermesen hata vermeyecektir büyük ihtimalle çünkü for içinde zaten ilklendirmissin ,i ye de başta değer vermeden for(;i++;i<20) yaparsan onun da hata verceğini düşünüyorum. |
Diğer sorun içinde , ilk önce a yı isteyip sonra if koycaksın , başta da koyulsun istiyosan bir if daha kullanacaksın , sen bir önceki turun a'sını kontrol ediyorsun. 5 girdin diyelim a için , toplanıyor yazılıyor, sonraki turda a 20 den küçüktürmü diye bakılıyor ki sen 5 girmiştin gene doğru kabul ediliyor ve sen a nın yeni değerini 22 girsende topluyum yazıyor. Bence java dan önce C veya algoritma çalış. |
daha gördüğün gibi çok başındayım javanın. çalıştığım yerleri bir harmanlayayım bir şeyler yazmaya çalışayım dedim. algoritma bakmak faydalı olacak. |
Bence dili öğrenmeye devam et, çünkü hiçbir dil bilmeden algoritma da çalışamazsın. Javada yerel değişkenler (C++ ın aksine) kullanılmadan önce bir değere sahip olmalıdır. |
ama daha öncede kullanıcıdan veri alarak birşeyler denemiştim ve ozaman bir değere eşitlemem gerekmemişti. |
|
Programı çalıştırdığınızda main methodunda yukarıdan aşağıya okumaya başlar. a'nın integer türünde bir veri saklayacağını anlar. For içerisinde ki if(a<20)'ye geldiğinde 20'ile a'yı karşılaştırır ve a herhangi bir veri içermediği için hata verir. Kullanıcıdan if koşulundan önce veri girmesini isteseydin hata vermeyecekti fakat bu seferde istediğiniz sonuca ulaşamayacaktınız. ![]() Umarım açıklayıcı olmuşumdur. |
Ben yazacaktım ![]() ![]() ![]() |
Soru soran arkadaş çok, birine de sen yardım edersin artık. ![]() |
![]() |
Doğru gözükmesine rağmen aslında tam olarak doğru cevap değil yazdığınız. Bu tür durumlarda java derleyicisi derleme zamanında hata verir, bahsettiğiniz gibi çalışma zamanında değil. İspatlamak için şu örneği gösterebilirim.
Aslında eğer çalışabilse "i", "b"den küçük olduğundan "a" 5 değerini alır ve ekrana değer basılır. Ancak Java a'nın ilk değer alma işlemi "kendine göre" garantide olmadığından bu kodu derlemez, derlemeye çalışırsanız yine aynı hatayı alırsınız. |
Hatamı düzeltip doğruyu gösterdiğiniz için teşekkür ediyorum. ![]() ![]() |
Kendine göre demişsiniz fakat bu durum Java'nın blok yapısından kaynaklanmaktadır. |
Ne demek istiyorsun? |
Yani Java'nın kafasına göre seçtiği bir durum değil. Bloklu yapıdan kaynaklanıyor. |
Zaten java'nın kafasına göre seçtiği bir şey demedim de bloklu yapı ne bi' anlat bakalım? |
Kod blokları. Parantezler. Erişim durumu. ![]() |
Buradaki durum kod blokları ya da erişim durumuyla alakalı değil yalnız.
Aşağıdaki çalışır:
Görüldüğü üzere blokların yapısında bir farklılık yok ama üstteki hata verir derleme sırasında, alttaki çalışır. Derleyici yerel değişkenlerin ilk değer alıp almadığını çalıştırma yapmadan kontrol eder. Zaten değişkenlerin kapsama alanı ile ilgili bir durum olsa üretilen hata başka olur. Üstteki çalışmayan kodu C'ye çevirirseniz, C dilinde de aynı blok yapısı, aynı kapsama alanı olmasına rağmen aşağıdaki kodda hata almazsınız.
Diğer bir çalışmayan örnek:
Kolay gelsin |
şimdi int a yı kullanıcan almak istedim yukarıda ilk başta int a; diye tanımladım. fakat eclipse hata mesaji verdi. int a = 0; diye tanımladığımda ise hata vermedi. şimdi anlamadığım ben a'yı neden burada sıfıra eşitliyorum. sonuçta dışarıdan alıyoruz. birde 20 den büyük bir sayi girdiğimde toplam yazısının çıkmasını nasıl engellerim.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi Guest-1585C216F -- 19 Ekim 2013; 21:00:00 >