Şimdi Ara

JAVA'DA ANLAMADIĞIM BİRŞEY???

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
34
Cevap
0
Favori
1.094
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  •   
    package deneme;

    import java.util.Scanner;

    public class Ilkders {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);



    int i=0;
    int a = 0;
    int b =0 ;


    for( i=0 ; i<5 ;i++){
    if(a < 20){


    System.out.print((i+1) + ". sayiyi giriniz= ");
    a = scan.nextInt();

    b = b+a;
    System.out.println("toplam= "+ b);
    }


    else if( a >= 20) {
    System.out.println("yanlis sayi girdiniz!");
    break;
    }
    }


    }
    }


    ş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.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-1585C216F -- 19 Ekim 2013; 21:00:00 >







  • quote:

    Orijinalden alıntı: boşmuhabbet

      
    package deneme;

    import java.util.Scanner;

    public class Ilkders {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);



    int i=0;
    int a = 0;
    int b =0 ;


    for( i=0 ; i<5 ;i++){
    if(a < 20){


    System.out.print((i+1) + ". sayiyi giriniz= ");
    a = scan.nextInt();

    b = b+a;
    System.out.println("toplam= "+ b);
    }


    else if( a >= 20) {
    System.out.println("yanlis sayi girdiniz!");
    break;
    }
    }


    }
    }


    ş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.

    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ış.
  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    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.
  • quote:

    Orijinalden alıntı: crshr

    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.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-1585C216F -- 20 Ekim 2013; 0:43:09 >
  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    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.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 20 Ekim 2013; 0:51:51 >
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • 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.
  • quote:

    Orijinalden alıntı: Cüleybib

    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






  • PeerNet* kullanıcısına yanıt
    Soru soran arkadaş çok, birine de sen yardım edersin artık.
  • quote:

    Orijinalden alıntı: Cüleybib

    Soru soran arkadaş çok, birine de sen yardım edersin artık.

  • quote:

    Orijinalden alıntı: Cüleybib

    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.

    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.

     
    public static void main(String[] args) {
    int i=0;
    int a;
    int b = 20 ;


    if(i<b) {
    a = 5;
    }

    System.out.println(a);
    }


    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.



    < Bu mesaj bu kişi tarafından değiştirildi hckr -- 25 Ekim 2013; 20:32:08 >




  • hckr kullanıcısına yanıt
    Hatamı düzeltip doğruyu gösterdiğiniz için teşekkür ediyorum. Java uzmanı değilim, fakat java konusunda daha doğrusu algoritma konusunda sorunu olan kişilere yardım etmeye çalışıyorum. Java'nın arka planda nasıl çalıştığını bilmediğim için en iyisi bu konuda mesajlar atmayayım.
  • hckr kullanıcısına yanıt
    Kendine göre demişsiniz fakat bu durum Java'nın blok yapısından kaynaklanmaktadır.
  • quote:

    Orijinalden alıntı: Lotus Expeditor

    Kendine göre demişsiniz fakat bu durum Java'nın blok yapısından kaynaklanmaktadır.

    Ne demek istiyorsun?
  • hckr kullanıcısına yanıt
    Yani Java'nın kafasına göre seçtiği bir durum değil. Bloklu yapıdan kaynaklanıyor.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Lotus Expeditor

    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?
  • hckr kullanıcısına yanıt
    Hocam üsluba dikkat ederseniz iyi olur.
  • hckr kullanıcısına yanıt
    Kod blokları. Parantezler. Erişim durumu.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Lotus Expeditor

    Kod blokları. Parantezler. Erişim durumu.

    Buradaki durum kod blokları ya da erişim durumuyla alakalı değil yalnız.

     
    public static void main(String[] args) {
    int i=0;
    int a;
    int b = 20 ;


    if(i<b) {
    a = 5;
    }

    System.out.println(a);
    }


    Aşağıdaki çalışır:
     
    public static void main(String[] args) {
    int i=0;
    int a;
    int b = 20 ;


    if(true) {
    a = 5;
    }

    System.out.println(a);
    }


    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.

     
    int main(int argc, char** argv) {
    int a;
    int i = 0;
    int b = 20;


    if (i < b) {
    a = 5;
    }
    printf("%d", a);
    return (EXIT_SUCCESS);
    }



    Diğer bir çalışmayan örnek:

     
    public static void main(String[] args)
    {
    int a;
    System.out.println(a);
    }

    Kolay gelsin



    < Bu mesaj bu kişi tarafından değiştirildi hckr -- 27 Ekim 2013; 16:54:26 >




  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.