2017-08-23 4 views
-1

Ich sah diese Frage hier, aber alle Lösungen wurden mit etwas namens "Karte" gegeben, im Moment weiß ich nicht, was es ist, und ich bin Lernen nach dem Buch (Einführung in Java-Programmierung 10. Ausgabe). Das ist auch meine Lösung, denn ich möchte nicht einfach in eine andere schauen, sondern alleine machen und meinen Fehler verstehen.Ich kann nicht herausfinden, was ist falsch mit meinem Code - eindeutige Zahlen

Der Benutzer gibt 10 Zahlen ein, und das Programm druckt die eindeutigen Zahlen. Dies ist mein Code:

int[] numbers = new int[10]; 
    int counter = 0; 
    for (int i = 0; i < 10; i++) { 
     int check = input.nextInt(); 
     if (!isContains(numbers, check)) ; 
     numbers[counter] = check; 
     counter++; 
    } 

    for (int i = 0; i < 10; i++) { 
     System.out.println(numbers[i]); 
    } 

} 

public static boolean isContains(int[] array, int key) { 

    for (int i = 0; i < array.length; i++) { 
     if (array[i] == key) 
      return true; 
    } 
    return false; 
    } 

} 

Meine Logik ist dies: ein leeres Array erstellen, 10 Zahlen durchlaufen, Eingabe eine Zahl von dem Benutzer, rufen die methond isContains- der prüft, ob die Nummer bereits innerhalb der ist Wenn dies nicht der Fall ist, weisen Sie es der Position [counter] zu.

Ich habe 2 Stunden gerade auf dieser EXC gearbeitet und kann nicht herausfinden, was los ist ... Ich habe versucht, dies in Form zu tun -Während tun - keine Ergebnisse ...

I Ich würde gern wissen, was mit meiner Logik nicht stimmt, keine gegebene Lösung. danke Jungs!

Antwort

1

In der if (!isContains(numbers, check)) ; Linie, die ; beendet die Erklärung, was bedeutet, dass Sie im Grunde, wenn die numbers Array sowieso nicht den Wert enthalten, werden überprüft und dann weiter auf, um die Nummer hinzuzufügen. Was Sie tun müssen, ist, fügen Sie die Nummer nur, wenn es durch Einschließen des bedingten Codeblock innerhalb {} nach der if Anweisung

if (!isContains(numbers, check)) { 
    numbers[counter] = check; 
    counter++; 
} 
1

Ihr „if“ Block, der überprüft, in der Anordnung nicht, dass es, wenn die Arrays enthält die Wert scheint falsch zu sein.

if (!isContains(numbers, check)) ; 
    numbers[counter] = check; 
    counter++; 

sollte sein:

if (!isContains(numbers, check)) { 
    numbers[counter] = check; 
    counter++; 
} 
Verwandte Themen