【发布时间】:2013-10-12 17:49:03
【问题描述】:
我正在尝试将用户输入的每个字符串分配给字符串数组。整个事情都在for 循环中,并由数组的索引进行评估。我的代码是:
String skillAssign[] = new String[100];
for (int i=0; isDone == false; i++)
{
System.out.println(skillAssign[i]);
System.out.println(i);
skillAssign[i] = keyboard.nextLine();
if ((!(skillAssign[i].equalsIgnoreCase("stats"))) && (!(skillAssign[i].equalsIgnoreCase("done"))))
{
assignmentValue = keyboard.nextInt();
if (((skillAssign[i].equalsIgnoreCase("health"))) && (skillPoints - assignmentValue >=0))
{
System.out.println("Added " + assignmentValue + " points to Health!");
skillPoints = (skillPoints - assignmentValue);
newMaxHealth = (assignmentValue + newMaxHealth);
}
//code that evaluates the string located inside the skillAssign[i] for other stats
}
第一个字符串计算正确,但是当我输入第二个字符串时,我得到 java.util.InputMisMatchException。我怎样才能得到它,以便它为用户输入的数组的每个索引分配一个字符串,然后评估它? (我想我得到了评估部分)
我试图将帖子限制在相关代码中,因此省略了诸如 isDone 之类的内容,但是当键入 done 并且使用 Scanner keyboard = new Scanner 构造键盘时,isDone 更改为 true,所有其他变量都设置为 0,除了 SkillPoints
【问题讨论】:
-
您提供的信息太少,无法解决问题。你还没有告诉
isDone是什么。另外,您在for循环中还做了什么。除此之外,请发布完整的堆栈跟踪。 -
您根本不会在循环中修改 isDone 。另外
isDone == false可以更好地表示为!isDone。 -
isDone 在循环内的省略代码中被修改,但它并不真正相关,因为无论如何都会在第二个循环之后引发异常。
-
循环时需要修改
isDone,否则会遇到ArrayIndexOutOfBoundsException。