2017-05-14 5 views
0

Ich versuche, ein Array des Typs Zeichenfolge, die die Größe und die Zeichenfolgen vom Benutzer eingegeben werden, und ich bekomme Fehler ArrayIndexOutOfBoundsException Es gibt ähnliche Threads gefunden, die zu diesem Thema, aber keine von denen gelöst haben dieser Fehler. in meiner for-Anweisung, wenn ich das gleiche heraushole und nur weniger mache, als ich keine Fehler erhalte, aber ich kann nur einen Namen weniger als die Zahl eingeben, die ich eingib. Wenn ich den Code belasse, scheint alles so zu funktionieren, wie es sollte minus der Fehler. Ich verstehe, dass ich diesen Fehler bekomme, weil mein Array außerhalb der Grenzen geht, aber ich kann nicht herausfinden, warum. bitte hilfe! Danke!String-Array außerhalb der Grenzen

package sales; 
import compare.*; 
import java.util.*; 

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

     Scanner scan=new Scanner(System.in); 
     System.out.println("Enter number of employees to compare:"); 
     int numEmp = scan.nextInt(); 

     while(numEmp < 2){ 
      System.out.println("Has to be at least 2 employees:"); 
      numEmp = scan.nextInt(); 
     } 

     String[] names = new String[numEmp]; 

     System.out.println("Enter employees name:"); 
     for(int i=0;i<=names.length;i++){ 
      names[i]=scan.nextLine();  
     } 
    } 
} 
+0

Dieses besondere Szenario wird genau durch die angenommene Antwort im Duplikat erklärt. –

+0

Ich sehe es nicht dort, was mein Problem gelöst hat, war das Hinzufügen von scan.nextLine(); vor meiner Aussage. das ist nicht in dem Thema, das du als Duplikat markiert hast. – Zachary

+0

Wenn das funktioniert, ist das zufällig. Der Zugriff auf 'names [names.length]' ist ungültig - das ist das eigentliche Problem in Ihrem Code. –

Antwort

0

Ändern Sie den Zustand des zu i<names.length statt i<=names.length.

scan.nextLine(); //add this 
for(int i=0;i<names.length;i++){ 
    names[i]=scan.nextLine(); 
} 
+0

Wenn ich das tue funktioniert mein Programm nicht richtig. Wenn ich die Anzahl der Angestellten = 2 eingegeben habe, kann ich bei der Eingabe von Namen nur einen Namen eingeben. – Zachary

+0

@Zachary siehe meine Antwort jetzt –

+0

Ehrfürchtig, danke! – Zachary

Verwandte Themen