2017-05-14 7 views
0

サイズと文字列がユーザーによって入力され、エラーが発生している型文字列の配列を作成しようとしていますArrayIndexOutOfBoundsException類似したスレッドが見つかりましたが、どれも解決されていませんこのエラー。私のforステートメントでは、私が等しかったものを取り出して、エラーを受け取りませんが、私は入力した数字よりも少ない名前しか入力できません。私がコードをそのまま残すと、エラーを除いてすべてが機能するように見えます。私は配列が境界から外れているので、私はこの欠陥を得ていると理解していますが、理由を理解できません。助けてください!ありがとうございました!文字列配列が範囲外にある

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

この特定のシナリオは、重複した回答で正確に説明されています。 –

+0

私はそれを見ていない、私の問題を解決したものは、scan.nextLine()を追加していた。私のfor声明の前に。重複しているとマークしたトピックには含まれていません。 – Zachary

+0

それがうまくいくなら、それは偶然です。 'names [names.length]'へのアクセスは無効です。これがあなたのコードの本当の問題です。 –

答えて

0

変更へi<names.length代わりにi<=names.lengthのための条件。

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

これを行うと正しくプログラムが動作しません。私は従業員の数= 2入力した場合、私は名前を入力するために行くとき私は1つの名前を入力することができます。 – Zachary

+0

@Zachary今私の答えを参照 –

+0

素晴らしい、ありがとう! – Zachary

関連する問題