我是Java新手,这可能是一个愚蠢的问题,但我真的需要你的帮助。字符串数组抛出错误 - Java
代码:
String str[] ={"Enter your name","Enter your age","Enter your salary"};
Scanner sc = new Scanner(System.in);
int[] i = new int[2];
String[] s = new String[2];
int[] y = new int[2];
for(int x = 0 ; x <= 2 ; x++)
{
System.out.println(str[0]);
s[x] = sc.nextLine();
System.out.println(s[x]);
System.out.println(str[1]);
i[x]=sc.nextInt();
System.out.println(i[x]);
System.out.println(str[2]);
y[x]=sc.nextInt();
System.out.println(y[x]);
}
输出 :
run:
Enter your name
Sathish
Sathish
Enter your age
26
26
Enter your salary
25000
25000
Enter your name
Enter your age
23
23
Enter your salary
456
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at javaapplication1.JavaApplication1.main(JavaApplication1.java:121)
456
Enter your name
Java Result: 1
BUILD SUCCESSFUL (total time: 34 seconds)
注意:第一环正常工作。然后它会抛出错误。
有人能告诉我我的错误在哪里,为什么它不工作?
或更好:'x
感谢您的最快回复但1st回路正常工作。当循环2开始不允许我输入Name时,它直接变老。你知道为什么吗? – user3114645
@ user3114645 - 这是一个不同的错误。当你使用'sc.nextInt()'时,你会得到每个字符,直到你按回车(但不是返回字符本身)。那么下次你调用'sc.nextLine()'时,它只能保存返回字符而没有别的。正确刷新的方法是简单地调用'sc.nextLine()',并且不要在每次调用'sc.nextInt()'后存储它。 – NoseKnowsAll