Bu kod neden hata veriyor

Başlatan codemaster, 11 Eylül 2015 - 23:31:59

« önceki - sonraki »

0 Üyeler ve 7 Ziyaretçi konuyu incelemekte.

codemaster

Alıntı yapılan: oasln - 12 Eylül 2015 - 01:27:19
Sorun şu ki 21. satırdaki if false ise orta değişkenine bir değer atanmıyor. Herhangi bir değer atanmamış bir değişkeni okumaya çalışmanızdan dolayı uygulamayı derlemenize izin verilmiyor.
Hocam değerler atanıyor isterseniz debug modunu açıp bakabilirsiniz atanıyor tam çıktı verecekken siliniyor.

oasln

Peki sayi1 = 3, sayi2 = 2, sayi3 = 1 dersek orta kac olur? Bu kosul saglandiginda orta ve kucuk degiskenine herhangi bir deger atanmiyor. Derleme yapamamanin nedeni de bu, programdaki mantik hatasi.
--

codemaster

Alıntı yapılan: oasln - 12 Eylül 2015 - 02:00:34
Peki sayi1 = 3, sayi2 = 2, sayi3 = 1 dersek orta kac olur? Bu kosul saglandiginda orta ve kucuk degiskenine herhangi bir deger atanmiyor. Derleme yapamamanin nedeni de bu, programdaki mantik hatasi.
Doğru o şekilde değerleri değiştirsek hata verirde ama ben değerleri değiştirmiyorum.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 12 Eylül 2015 - 02:04:46

int a;
        if(false)
            System.out.println(a);
        else{
        a = 1;
        System.out.println(a);
        }


Sizin dediğiniz gibi olsa buda çalışmazdı.

oasln

Bu programda herhangi bir mantık hatası yok.
--

parduscix

Değerleri şu şekilde tanımlarsanız olası sıkıntıların önüne geçersiniz:

int a = 0; (0 sayısının önemi yok sadece değer atanmış şekilde kalmalı, nasıl olsa değişecek.)

if(koşul)
{
Olay
}

Burada olayı gerçekleştirirken atanılan a değersizse hata verebilir. Olay gerçekleşmez. Derleme yapılmaz.(Bilgisayar insan kadar akıllı değildir siz ne verirseniz onu anlar.)

7hr33l3t73r

#30

//package javaapplication1;


public class JavaApplication1
{


    public static void main(String[] args)
{
        int sayi1,sayi2,sayi3,buyuk,orta=0,kucuk=0;

        sayi1 = 10;
        sayi2 = 20;
        sayi3 = 30;

        if(sayi1>sayi2){
            if(sayi1>sayi3){
             buyuk = sayi1;
                if(sayi3>sayi2){
                orta = sayi3;
                kucuk = sayi1;
                }
            } else{
             buyuk = sayi3;
             orta = sayi2;
             kucuk = sayi1;
          }
        }else{
            if(sayi2>sayi3){
             buyuk = sayi2;
                if(sayi1>sayi3){
                orta = sayi1;
                kucuk = sayi3;
                }else{
                 orta = sayi3;
                 kucuk = sayi1;
                }
            }else{
              buyuk = sayi3;
                if(sayi1>sayi2){
                orta = sayi1;
                kucuk = sayi2;
                }else{
                 orta = sayi2;
                 kucuk = sayi1;
                }
            }
        }
        System.out.println(buyuk+" Büyük");
        System.out.println(orta+" orta");
        System.out.println(kucuk+" kucuk");
    }
}

Sonuc.

Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
[parsing completed 28ms]
[search path for source files: /home/wolf/GNUstep/Library/Libraries/Java,/usr/lib/GNUstep/Libraries/Java]
[search path for class files: /usr/lib/jvm/java-7-openjdk/jre/lib/resources.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/rt.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/sunrsasign.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/jsse.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/jce.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/charsets.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/rhino.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/jfr.jar,/usr/lib/jvm/java-7-openjdk/jre/classes,/usr/lib/jvm/java-7-openjdk/jre/lib/ext/dnsns.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/ext/sunjce_provider.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/ext/localedata.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/ext/zipfs.jar,/usr/lib/jvm/java-7-openjdk/jre/lib/ext/sunpkcs11.jar,/home/wolf/GNUstep/Library/Libraries/Java,/usr/lib/GNUstep/Libraries/Java]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[checking javaapplication1.JavaApplication1]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/System.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/io/PrintStream.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/io/FilterOutputStream.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/io/OutputStream.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/StringBuilder.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/AbstractStringBuilder.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/CharSequence.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/StringBuffer.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[/usr/lib/jvm/java-7-openjdk/lib/ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]
[wrote RegularFileObject[JavaApplication1.class]]
[total 718ms]

Ben pek hata goremedim :)


Dosya jar
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

freeman

Sanırım kullanılan jdk dan dolayı farklı sonuçlar alınabiliyor.

Programın ilk halini ben derleyemedim bile. Bendeki Java versiyonu;

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.14.04.1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

Amenofis

Programlamaya yeni başlayanlar için java korkunç bişey, C gibi bir nimet dururken...

oasln

Alıntı yapılan: Amenofis - 12 Eylül 2015 - 20:23:35
Programlamaya yeni başlayanlar için java korkunç bişey, C gibi bir nimet dururken...

C ne kadar nimet sayılır programlamaya başlamak için orası tartışılır :-)

Eğer ben programlamaya bugün başlıyor olsaydım hiç kuşkusuz python'u seçerdim. Öğrenmesi hayli kolay ve zevkli. Oyun oynarken öğrenebileceğiniz şöyle bir site de var: https://codecombat.com/

Bunun haricinde konu ile alakalı, 3 değişkeni sıralamak için korkunç bir algoritma kullanılmış.
--

Amenofis

@oasln
Tecrübeli programcılar için tartışılmaz. Java, yapısı gereği tecrübeli kişiler için sağlam uygulama geliştirme platformudur. Uygulamanın hatasız çalışması için yeni başlayanların asla anlayamayacağı şeyleri yapmaya zorlar, bu konudaki problem gibi.

Ayrıca yeni başlayanlar çok fazla deneme yapacağı için javanın yavaş derleme/çalıştırması dezavantaj haline gelir. IDE olarak ta java geliştirme ortamları oldukça yavaş ve karmaşıktır.

Script dilleri derlemeye gerek duymadığı için sık sık deneme yapmaya çok uygun olabilir ama bunlar da programlama mantığını kavramak için uygun değil. Çünkü dinamik tipli diller makinayı neredeyse tamamen soyutlar. Arka planda dönen dolaplar hakkında hiçbir fikriniz olmaz.

C ise çok hızlı derlenip çalıştırılması, hantal geliştirme araçlarına ihtiyaç duymaması, makineye yakın olması, programcıyı hiçbirşeye zorlamaması ve böylece hatanın nelere sebep olduğunu görebilmen açısından yeni başlayanlara kusursuz bir ortam sunar.

parduscix

Bence javadan başlayın android ile devam edin
Ben öyle yaptım mutluyum☺☺☺

codemaster

Alıntı yapılan: oasln - 12 Eylül 2015 - 20:47:25
Alıntı yapılan: Amenofis - 12 Eylül 2015 - 20:23:35
Programlamaya yeni başlayanlar için java korkunç bişey, C gibi bir nimet dururken...

C ne kadar nimet sayılır programlamaya başlamak için orası tartışılır :-)

Eğer ben programlamaya bugün başlıyor olsaydım hiç kuşkusuz python'u seçerdim. Öğrenmesi hayli kolay ve zevkli. Oyun oynarken öğrenebileceğiniz şöyle bir site de var: https://codecombat.com/

Bunun haricinde konu ile alakalı, 3 değişkeni sıralamak için korkunç bir algoritma kullanılmış.
Kardeşim sadece if else kullanarak sen daha iyisini yap görelim.Heme eleştiriyorsunuz.
Not: Daha programın neden hata verdiğini bilmiyorsun algoritmayı eleştiriyorsun.

oasln

#37
haha peki


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 12 Eylül 2015 - 23:59:47

Eğer bu problemde sadece if kullanılması gibi bir zorunluluk olsaydı, problemi şöyle çözerdim:
class codemaster {
    public static void main (String[] args) throws java.lang.Exception {
        int s1 = 5,    // sayi1
            s2 = 4,    // sayi2
            s3 = 10,   // sayi3
            k = ((s1<s2?s1:s2)<s3?(s1<s2?s1:s2):s3),     // kucuk
            b = ((s1>=s2?s1:s2)>=s3?(s1>=s2?s1:s2):s3),  // buyuk
            o = ((s1>k&&s1<b?s1:(s2>=k&&s2<b?s2:s3)));   // orta
        System.out.format("%d %d %d\n", k, o, b);
    }
}
--

codemaster

#38
Alıntı yapılan: oasln - 12 Eylül 2015 - 23:18:53
haha peki


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 12 Eylül 2015 - 23:59:47

Eğer bu problemde sadece if kullanılması gibi bir zorunluluk olsaydı, problemi şöyle çözerdim:
class codemaster {
    public static void main (String[] args) throws java.lang.Exception {
        int s1 = 5,    // sayi1
            s2 = 4,    // sayi2
            s3 = 10,   // sayi3
            k = ((s1<s2?s1:s2)<s3?(s1<s2?s1:s2):s3),     // kucuk
            b = ((s1>=s2?s1:s2)>=s3?(s1>=s2?s1:s2):s3),  // buyuk
            o = ((s1>k&&s1<b?s1:(s2>=k&&s2<b?s2:s3)));   // orta
        System.out.format("%d %d %d\n", k, o, b);
    }
}

Kardeş ben sana nediyorum sadece if else kullanacaksın diyorum 3 lü oparatör diye bir kelime çıktımı ağızımdan?
Ayrıca bunun if elseden tek farkı kod olarak daha az gibi gözüküyor ama if elsedeki gibi bütün sorgular yapılıyor.Bana böyle şeylerle gelme.
Yinede tebrik ederim bu şekilde kullanışı yeni gördüm.Uzun boylu düşünmüşsün :D

Sh4oTT

#39
@oasln, https://codecombat.com/ site cok iyimis hocam ucretsız kısımları eglenerek oynadım keske ucretsız olsaymıs :)
Benzer sıteler ararken soyle bır sıte buldum pek bır sey anlamadım ama :( https://www.codingame.com

Amenofis

Alıntı yapılan: oasln - 12 Eylül 2015 - 23:18:53
haha peki


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 12 Eylül 2015 - 23:59:47

Eğer bu problemde sadece if kullanılması gibi bir zorunluluk olsaydı, problemi şöyle çözerdim:
class codemaster {
    public static void main (String[] args) throws java.lang.Exception {
        int s1 = 5,    // sayi1
            s2 = 4,    // sayi2
            s3 = 10,   // sayi3
            k = ((s1<s2?s1:s2)<s3?(s1<s2?s1:s2):s3),     // kucuk
            b = ((s1>=s2?s1:s2)>=s3?(s1>=s2?s1:s2):s3),  // buyuk
            o = ((s1>k&&s1<b?s1:(s2>=k&&s2<b?s2:s3)));   // orta
        System.out.format("%d %d %d\n", k, o, b);
    }
}


Bu if değil mi yani? Üstelik çok fazla sorgu var, çok verimsiz.

ShangriLa

Alıntı yapılan: Amenofis - 13 Eylül 2015 - 13:14:21
Bu if değil mi yani? Üstelik çok fazla sorgu var, çok verimsiz.
Sanırım anca if kullanarak bu kadar olur denmek istenmiş
Ubuntu Mate Trusty

parduscix

Java yazarken kodun olabildiğine az harften oluşmasına dikkat ederim ben. Hem kalabalık görünmez hem boyuttan tasarruf ederim.