2017-04-18 7 views
1

Ich habe einen logischen Fehler mit diesem Code. Ich muss zehn int-Eingaben vom Benutzer erhalten und dann eine Zahl größer als 10 ausdrucken. Das einzige Problem ist, dass, wenn die allerletzte Zahl im Array größer als 10 ist, es nicht drucken wird.Logischer Fehler mit Array

public class Bigger10 
    { 
     public static void main(String[] args) 
     { 
      System.out.println("Please enter 10 integer numbers"); 

      int[] num = new int[10]; 
      int count = 0; 
      int num1 = StdIn.readInt(); 

      while(count<9) 
      { 
       num[count] = num1; 
       count++; 
       num1 = StdIn.readInt(); 
      } 

      for(int i = 0;i<count;i++) 
      { 
       if(num[i]>10) 
       { 
        System.out.printf("%d ", num[i]); 
       }  
      } 
     } 
    } 
+3

das ist, weil Sie nur bis 8. Index dh bis 9. Element Überprüfung nur – warl0ck

+0

'for (int i = 0; i Misys

Antwort

4

Verlassen Sie sich auf das Array, um Ihnen zu sagen, wie groß es statt Ihrer Konstante 9 ist.

Die Lösung ist einfach: in Ihrer Schleife, iterieren Sie stattdessen über ihre Länge.

while(count < num.length) { 

} 
+0

Als ich tun, dass ich eine bekommen error: Ausnahme im Thread "main" java.lang.ArrayIndexOutOfBoundsException: 10. Das bedeutet nur, dass es größer ist als die Array-Größe richtig? – Ngroenewold

1
 int num1 =0; 

     while(count<=9) 
     { 
      num1 = StdIn.readInt(); 
      num[count] = num1; 
      count++; 

     } 

count sollte <=9 sein, weil Sie 10 Werte scannen müssen. Wenn es <9 ist, dann scannen Sie nur 9 Werte.

num1 = StdIn.readInt(); sollte die erste Anweisung in der while Schleife sein. Wenn Sie es am Ende hinzufügen, scannen Sie eine zusätzliche Nummer. Diese Zahl wird dem Array nicht hinzugefügt, da die Schleifenbedingung falsch wird, d. H. Der Zählwert wird 10. Die letzte Nummer wird also nicht gedruckt, weil sie nicht zum Array hinzugefügt wird.