我试图通过用户输入用字符串数组填充值。我稍后会在这个课上做更多的事情,但只是想看看数组已填满并将其打印出来。我使用while循环来填充特定值,等待用户输入0来停止,但是在我提交一个值后,无论数组大小还是循环,我都会得到一个ArrayIndexOutOfBoundsException。输入0也不会阻止它。完整代码如下。
此外,异常具有与之关联的数组的大小(在本例中为25。)
非常感谢帮助 - 谢谢!
import java.util.Scanner;
public class Dincision {
static Scanner scanner = new Scanner(System.in);
public static String entered;
public static String[]foods;
public static void main (String[]args){
getChoices();
int count=0;
for (count=0; count<=24; count++){
System.out.println(foods[count]);
}
}
static public void getChoices() {
int i=0;
foods= new String[25];
String input;
System.out.println("Enter an eating option.");
input=scanner.next();
while (input != "0"){
foods[i]=input; //error here//
i++;
}
System.out.println("That's all!");
}
}
答案 0 :(得分:7)
这里有两个问题。首先,那是not the correct way to compare String
s。您应该使用while(!input.equals("0")
代替。
其次,您无法在循环中获取新数据。它将不断重复使用相同的输入值,直到它超出数组的范围。将循环更改为:
input=scanner.next();
while(!input.equals("0")){
foods[i]=input;
i++;
input=scanner.next();
}
在循环中获取新输入。
另外,为了安全起见,您应该在while循环中添加边界检查。如果没有更多的空间可以放入它,请停止循环。
while(!input.equals("0") && i < foods.length){
答案 1 :(得分:0)
您应该将while语句中的循环限制为数组的大小。你试图获得不存在的食物[26]。
答案 2 :(得分:0)
由于我无法发表评论:我更喜欢
!"0".equals(input)
因为它在输入为空时有效。