Bu programı istediğim gibi çalıştırmadım

public class Phone {
    public static void main(String args[]) {

        String numbers[][] = { { "Tom", "555-3322" }, { "Mary", " 555-8976" },
                { "Jon", "555-1037" }, { "Rachel", "555-1400" } };

        int i;

        if (args.length != 1)
            System.out.println("Usage: java Phone ");
        else {
            for (i = 0; i < numbers.length; i++) {
                if (numbers[i][0].equals(args[0])) {
                    System.out.println(numbers[i][0] + ": " + numbers[i][1]);
                    break;
                }
                if (i == numbers.length)
                    ;
                System.out.println("Name not found.");
            }
        }
    }
}

Bu nedenle, bu kod satırını çalıştırmaya çalıştıktan sonra, ilk sysout ifadesinden başka herhangi bir sonuç alamadım.

5
Beklenen sonuç neydi?
katma yazar Voldemort, kaynak
Bu kod benim için iyi çalışıyor gibi görünüyor. Tom'un argümanıyla çalıştırıldığında: "Tom: 555-3322" beklendiği gibi yazdırılıyor. WonderWorld ile anlaşırsınız, belki programın komut satırının yürütülmesinin beklediğiniz gibi bir hatayla karşı karşıya kalmamasıdır.
katma yazar Alex Pritchard, kaynak
Bu kod benim için iyi çalışıyor gibi görünüyor. Tom'un argümanıyla çalıştırıldığında: "Tom: 555-3322" beklendiği gibi yazdırılıyor. WonderWorld ile anlaşırsınız, belki programın komut satırının yürütülmesinin beklediğiniz gibi bir hatayla karşı karşıya kalmamasıdır.
katma yazar Alex Pritchard, kaynak
Bu kod benim için iyi çalışıyor gibi görünüyor. Tom'un argümanıyla çalıştırıldığında: "Tom: 555-3322" beklendiği gibi yazdırılıyor. WonderWorld ile anlaşırsınız, belki programın komut satırının yürütülmesinin beklediğiniz gibi bir hatayla karşı karşıya kalmamasıdır.
katma yazar Alex Pritchard, kaynak
Bu kod benim için iyi çalışıyor gibi görünüyor. Tom'un argümanıyla çalıştırıldığında: "Tom: 555-3322" beklendiği gibi yazdırılıyor. WonderWorld ile anlaşırsınız, belki programın komut satırının yürütülmesinin beklediğiniz gibi bir hatayla karşı karşıya kalmamasıdır.
katma yazar Alex Pritchard, kaynak
Kodunuzu biçimlendirdim ve amacınıza biraz daha fazla anlam eklemeye çalıştım. Tamamen fikrimce görüşümü değiştirmeye çalışmadım. Sorunuz mantıklı değil. Ne çalışmıyor? Bu kodun ne yapmasını düşünüyorsunuz?
katma yazar Nirmal, kaynak
Kodunuzu biçimlendirdim ve amacınıza biraz daha fazla anlam eklemeye çalıştım. Tamamen fikrimce görüşümü değiştirmeye çalışmadım. Sorunuz mantıklı değil. Ne çalışmıyor? Bu kodun ne yapmasını düşünüyorsunuz?
katma yazar Nirmal, kaynak
Kodunuzu biçimlendirdim ve amacınıza biraz daha fazla anlam eklemeye çalıştım. Tamamen fikrimce görüşümü değiştirmeye çalışmadım. Sorunuz mantıklı değil. Ne çalışmıyor? Bu kodun ne yapmasını düşünüyorsunuz?
katma yazar Nirmal, kaynak
Kodunuzu biçimlendirdim ve amacınıza biraz daha fazla anlam eklemeye çalıştım. Tamamen fikrimce görüşümü değiştirmeye çalışmadım. Sorunuz mantıklı değil. Ne çalışmıyor? Bu kodun ne yapmasını düşünüyorsunuz?
katma yazar Nirmal, kaynak
if (numbers.length! = 1) demek istemiyor musunuz?
katma yazar JLewkovich, kaynak
if (numbers.length! = 1) demek istemiyor musunuz?
katma yazar JLewkovich, kaynak
Muhtemelen args.length 1 ile aynı değildir.
katma yazar WonderWorld, kaynak
Muhtemelen args.length 1 ile aynı değildir.
katma yazar WonderWorld, kaynak
Muhtemelen args.length 1 ile aynı değildir.
katma yazar WonderWorld, kaynak
Mary'nin telefonunu piyasaya sürmem gerekiyordu ama "Usage: java Phone " ifadesini aldım.
katma yazar Pingu, kaynak
Mary'nin telefonunu piyasaya sürmem gerekiyordu ama "Usage: java Phone " ifadesini aldım.
katma yazar Pingu, kaynak
Mary'nin telefonunu piyasaya sürmem gerekiyordu ama "Usage: java Phone " ifadesini aldım.
katma yazar Pingu, kaynak
Mary'nin telefonunu piyasaya sürmem gerekiyordu ama "Usage: java Phone " ifadesini aldım.
katma yazar Pingu, kaynak

12 cevap

Kodunuzda birkaç hata var. itibaren

Kullanım: java Telefon

it looks like expected content of args array olmalı"Phone" which are two elements so

if(args.length != 1) 

geçerli bir koşul değil. Muhtemelen ile değiştirmeniz gerekir

if (args.length < 2)

Other problem is that is second element in args array stored in args[1] so

if(numbers[i][0].equals(args[0])) 

olmalı

if(numbers[i][0].equals(args[1])) //we want to compare name, not "Phone" string

Son problemler

if (i == numbers.length);
    System.out.println("Name not found.");
  • inside for loop i will never be equal number.length because for (i = 0; i < numbers.length; i++) loop iterates only if i. So this condition olmalıreplaced with

    if (i == numbers.length -1)
    
  • there is semicolon right after this condition which represents empty instruction, which means that

    if (i == numbers.length - 1);
        System.out.println("Name not found.");
    

    is essentially same as

    if (i == numbers.length - 1)
        ;
    System.out.println("Name not found.");
    

    which means that execution of System.out.println("Name not found."); doesn't depend on result of if condition.

    To solve this problem simply remove this additional ;, and to avoid this problem always surround code which should depend of if else for while inside blocks {...}.

1
katma
Geçerli kodunuzu ve paylaşım bağlantınızı pastebin.com adresinde yayınlayabilir misiniz? Ayrıca nasıl çalıştırmaya çalışıyorsun?
katma yazar Pshemo, kaynak
Bu yüzden nasıl çalıştırdığını sordum.
katma yazar Pshemo, kaynak
Cevabımın sonunda açıklandığı gibi System.out.println ("i yaptığı if (i == numbers.length-1) 'den sonra ; ' ı kaldırmayı unuttunuz. İsim bulunamadı. "); if 'den bağımsız. Ayrıca kullandığınız değişkenleri yazdırmayı da düşünün. Belki bu, sorunlarınızı izlemenize yardımcı olur ( System.out.println (Arrays.toString (args)) kullanın; ).
katma yazar Pshemo, kaynak
Rica ederim.
katma yazar Pshemo, kaynak
Ben büyüdü yapmaya devam ediyorum ama iyi dostum, yardımın için de yeni bir tane yapacağım.
katma yazar Pingu, kaynak
İşte bu sayfadaki bağlantı pastebin.com/E9eBUhEa
katma yazar Pingu, kaynak
Söylediklerinizi yaptım ama başlangıçta olduğu gibi herhangi bir telefon numarasını başlatmayın. Sanırım iyi bir hata yapmayacağım.
katma yazar Pingu, kaynak
Adımlarını takip ettim ama başlangıçtaki gibi devam ediyorum
katma yazar Pingu, kaynak

Kodunuzda birkaç hata var. itibaren

Kullanım: java Telefon

it looks like expected content of args array olmalı"Phone" which are two elements so

if(args.length != 1) 

geçerli bir koşul değil. Muhtemelen ile değiştirmeniz gerekir

if (args.length < 2)

Other problem is that is second element in args array stored in args[1] so

if(numbers[i][0].equals(args[0])) 

olmalı

if(numbers[i][0].equals(args[1])) //we want to compare name, not "Phone" string

Son problemler

if (i == numbers.length);
    System.out.println("Name not found.");
  • inside for loop i will never be equal number.length because for (i = 0; i < numbers.length; i++) loop iterates only if i. So this condition olmalıreplaced with

    if (i == numbers.length -1)
    
  • there is semicolon right after this condition which represents empty instruction, which means that

    if (i == numbers.length - 1);
        System.out.println("Name not found.");
    

    is essentially same as

    if (i == numbers.length - 1)
        ;
    System.out.println("Name not found.");
    

    which means that execution of System.out.println("Name not found."); doesn't depend on result of if condition.

    To solve this problem simply remove this additional ;, and to avoid this problem always surround code which should depend of if else for while inside blocks {...}.

1
katma
Geçerli kodunuzu ve paylaşım bağlantınızı pastebin.com adresinde yayınlayabilir misiniz? Ayrıca nasıl çalıştırmaya çalışıyorsun?
katma yazar Pshemo, kaynak
Bu yüzden nasıl çalıştırdığını sordum.
katma yazar Pshemo, kaynak
Cevabımın sonunda açıklandığı gibi System.out.println ("i yaptığı if (i == numbers.length-1) 'den sonra ; ' ı kaldırmayı unuttunuz. İsim bulunamadı. "); if 'den bağımsız. Ayrıca kullandığınız değişkenleri yazdırmayı da düşünün. Belki bu, sorunlarınızı izlemenize yardımcı olur ( System.out.println (Arrays.toString (args)) kullanın; ).
katma yazar Pshemo, kaynak
Rica ederim.
katma yazar Pshemo, kaynak
Ben büyüdü yapmaya devam ediyorum ama iyi dostum, yardımın için de yeni bir tane yapacağım.
katma yazar Pingu, kaynak
İşte bu sayfadaki bağlantı pastebin.com/E9eBUhEa
katma yazar Pingu, kaynak
Söylediklerinizi yaptım ama başlangıçta olduğu gibi herhangi bir telefon numarasını başlatmayın. Sanırım iyi bir hata yapmayacağım.
katma yazar Pingu, kaynak
Adımlarını takip ettim ama başlangıçtaki gibi devam ediyorum
katma yazar Pingu, kaynak

Kodunuzda birkaç hata var. itibaren

Kullanım: java Telefon

it looks like expected content of args array olmalı"Phone" which are two elements so

if(args.length != 1) 

geçerli bir koşul değil. Muhtemelen ile değiştirmeniz gerekir

if (args.length < 2)

Other problem is that is second element in args array stored in args[1] so

if(numbers[i][0].equals(args[0])) 

olmalı

if(numbers[i][0].equals(args[1])) //we want to compare name, not "Phone" string

Son problemler

if (i == numbers.length);
    System.out.println("Name not found.");
  • inside for loop i will never be equal number.length because for (i = 0; i < numbers.length; i++) loop iterates only if i. So this condition olmalıreplaced with

    if (i == numbers.length -1)
    
  • there is semicolon right after this condition which represents empty instruction, which means that

    if (i == numbers.length - 1);
        System.out.println("Name not found.");
    

    is essentially same as

    if (i == numbers.length - 1)
        ;
    System.out.println("Name not found.");
    

    which means that execution of System.out.println("Name not found."); doesn't depend on result of if condition.

    To solve this problem simply remove this additional ;, and to avoid this problem always surround code which should depend of if else for while inside blocks {...}.

1
katma
Geçerli kodunuzu ve paylaşım bağlantınızı pastebin.com adresinde yayınlayabilir misiniz? Ayrıca nasıl çalıştırmaya çalışıyorsun?
katma yazar Pshemo, kaynak
Bu yüzden nasıl çalıştırdığını sordum.
katma yazar Pshemo, kaynak
Cevabımın sonunda açıklandığı gibi System.out.println ("i yaptığı if (i == numbers.length-1) 'den sonra ; ' ı kaldırmayı unuttunuz. İsim bulunamadı. "); if 'den bağımsız. Ayrıca kullandığınız değişkenleri yazdırmayı da düşünün. Belki bu, sorunlarınızı izlemenize yardımcı olur ( System.out.println (Arrays.toString (args)) kullanın; ).
katma yazar Pshemo, kaynak
Rica ederim.
katma yazar Pshemo, kaynak
Ben büyüdü yapmaya devam ediyorum ama iyi dostum, yardımın için de yeni bir tane yapacağım.
katma yazar Pingu, kaynak
İşte bu sayfadaki bağlantı pastebin.com/E9eBUhEa
katma yazar Pingu, kaynak
Söylediklerinizi yaptım ama başlangıçta olduğu gibi herhangi bir telefon numarasını başlatmayın. Sanırım iyi bir hata yapmayacağım.
katma yazar Pingu, kaynak
Adımlarını takip ettim ama başlangıçtaki gibi devam ediyorum
katma yazar Pingu, kaynak

Kodunuzda birkaç hata var. itibaren

Kullanım: java Telefon

it looks like expected content of args array olmalı"Phone" which are two elements so

if(args.length != 1) 

geçerli bir koşul değil. Muhtemelen ile değiştirmeniz gerekir

if (args.length < 2)

Other problem is that is second element in args array stored in args[1] so

if(numbers[i][0].equals(args[0])) 

olmalı

if(numbers[i][0].equals(args[1])) //we want to compare name, not "Phone" string

Son problemler

if (i == numbers.length);
    System.out.println("Name not found.");
  • inside for loop i will never be equal number.length because for (i = 0; i < numbers.length; i++) loop iterates only if i. So this condition olmalıreplaced with

    if (i == numbers.length -1)
    
  • there is semicolon right after this condition which represents empty instruction, which means that

    if (i == numbers.length - 1);
        System.out.println("Name not found.");
    

    is essentially same as

    if (i == numbers.length - 1)
        ;
    System.out.println("Name not found.");
    

    which means that execution of System.out.println("Name not found."); doesn't depend on result of if condition.

    To solve this problem simply remove this additional ;, and to avoid this problem always surround code which should depend of if else for while inside blocks {...}.

1
katma
Geçerli kodunuzu ve paylaşım bağlantınızı pastebin.com adresinde yayınlayabilir misiniz? Ayrıca nasıl çalıştırmaya çalışıyorsun?
katma yazar Pshemo, kaynak
Bu yüzden nasıl çalıştırdığını sordum.
katma yazar Pshemo, kaynak
Cevabımın sonunda açıklandığı gibi System.out.println ("i yaptığı if (i == numbers.length-1) 'den sonra ; ' ı kaldırmayı unuttunuz. İsim bulunamadı. "); if 'den bağımsız. Ayrıca kullandığınız değişkenleri yazdırmayı da düşünün. Belki bu, sorunlarınızı izlemenize yardımcı olur ( System.out.println (Arrays.toString (args)) kullanın; ).
katma yazar Pshemo, kaynak
Rica ederim.
katma yazar Pshemo, kaynak
Ben büyüdü yapmaya devam ediyorum ama iyi dostum, yardımın için de yeni bir tane yapacağım.
katma yazar Pingu, kaynak
Adımlarını takip ettim ama başlangıçtaki gibi devam ediyorum
katma yazar Pingu, kaynak
İşte bu sayfadaki bağlantı pastebin.com/E9eBUhEa
katma yazar Pingu, kaynak
Söylediklerinizi yaptım ama başlangıçta olduğu gibi herhangi bir telefon numarasını başlatmayın. Sanırım iyi bir hata yapmayacağım.
katma yazar Pingu, kaynak

Kodunuzda iki küçük hata var. Bunlardan biri, if kodu için parantez kullanmamanızla ilgilidir

if(i == numbers.length);
    System.out.println("Name not found.");

Buradaki problemi tespit etmek kolay değil. İf ifadesinden sonra bir noktalı virgül vardır, bu, if case için kod bloğu olmadığı ve System.out.println 'nin her zaman çalıştırıldığı anlamına gelir.

İkinci sorun, i == numbers.length 'i kontrol etmektir. Dizi indeksi sıfır temelli olduğundan, bu for loop içinde asla doğru değildir. Dört girişiniz olduğunda en yüksek endeks üç olur. Dolayısıyla bu durum asla gerçek olmaz.

Kodu böyle düzeltmelisin.

if(i == numbers.length-1) {
    System.out.println("Name not found.");
}
0
katma

Kodunuzda iki küçük hata var. Bunlardan biri, if kodu için parantez kullanmamanızla ilgilidir

if(i == numbers.length);
    System.out.println("Name not found.");

Buradaki problemi tespit etmek kolay değil. İf ifadesinden sonra bir noktalı virgül vardır, bu, if case için kod bloğu olmadığı ve System.out.println 'nin her zaman çalıştırıldığı anlamına gelir.

İkinci sorun, i == numbers.length 'i kontrol etmektir. Dizi indeksi sıfır temelli olduğundan, bu for loop içinde asla doğru değildir. Dört girişiniz olduğunda en yüksek endeks üç olur. Dolayısıyla bu durum asla gerçek olmaz.

Kodu böyle düzeltmelisin.

if(i == numbers.length-1) {
    System.out.println("Name not found.");
}
0
katma

Kodunuzda iki küçük hata var. Bunlardan biri, if kodu için parantez kullanmamanızla ilgilidir

if(i == numbers.length);
    System.out.println("Name not found.");

Buradaki problemi tespit etmek kolay değil. İf ifadesinden sonra bir noktalı virgül vardır, bu, if case için kod bloğu olmadığı ve System.out.println 'nin her zaman çalıştırıldığı anlamına gelir.

İkinci sorun, i == numbers.length 'i kontrol etmektir. Dizi indeksi sıfır temelli olduğundan, bu for loop içinde asla doğru değildir. Dört girişiniz olduğunda en yüksek endeks üç olur. Dolayısıyla bu durum asla gerçek olmaz.

Kodu böyle düzeltmelisin.

if(i == numbers.length-1) {
    System.out.println("Name not found.");
}
0
katma

Kodunuzda iki küçük hata var. Bunlardan biri, if kodu için parantez kullanmamanızla ilgilidir

if(i == numbers.length);
    System.out.println("Name not found.");

Buradaki problemi tespit etmek kolay değil. İf ifadesinden sonra bir noktalı virgül vardır, bu, if case için kod bloğu olmadığı ve System.out.println 'nin her zaman çalıştırıldığı anlamına gelir.

İkinci sorun, i == numbers.length 'i kontrol etmektir. Dizi indeksi sıfır temelli olduğundan, bu for loop içinde asla doğru değildir. Dört girişiniz olduğunda en yüksek endeks üç olur. Dolayısıyla bu durum asla gerçek olmaz.

Kodu böyle düzeltmelisin.

if(i == numbers.length-1) {
    System.out.println("Name not found.");
}
0
katma

You might be running this java code without argument specified.
eg. java Phone will give output as Usage: java Phone
But if you run it with an argument , you will surely have a output.
eg. java Phone Tom will give output as Tom: 555-3322

0
katma

You might be running this java code without argument specified.
eg. java Phone will give output as Usage: java Phone
But if you run it with an argument , you will surely have a output.
eg. java Phone Tom will give output as Tom: 555-3322

0
katma

You might be running this java code without argument specified.
eg. java Phone will give output as Usage: java Phone
But if you run it with an argument , you will surely have a output.
eg. java Phone Tom will give output as Tom: 555-3322

0
katma

You might be running this java code without argument specified.
eg. java Phone will give output as Usage: java Phone
But if you run it with an argument , you will surely have a output.
eg. java Phone Tom will give output as Tom: 555-3322

0
katma