[英]Assigning a String to a String array
我试图将用户输入的每个字符串分配给String数组。 整个过程都在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
后将isDone更改为true,并使用Scanner keyboard = new Scanner
构造了Scanner keyboard = new Scanner
所有其他变量均设置为0(skillPoints除外)
我已经测试了上面提到的代码,这是发生了什么:
keyboard.nextLine()
)。 我输入了“ 健康 ”。 keyboard.nextInt()
)。 我输入了“ 40 ”。 keyboard.nextInt()
)。 似乎没有要求我输入第二个字符串,而是立即输入整数。
我不知道为什么,但是看起来nextInt()
导致下一个nextLine()
被跳过。
也许你可以更换
assignmentValue = keyboard.nextInt();
与
try {
assignmentValue = Integer.parseInt(keyboard.nextLine());
}
catch (NumberFormatException exc) {
throw new InputMismatchException(exc.getMessage());
}
编辑
我在StackOverflow上看到一则帖子 ,简要提到了为何nextInt()
之后的nextLine()
nextInt()
被跳过。
我相信这更接近您的意图。 这样,nextLine捕获的对键盘输入的引用不会在每次迭代中丢失,而是保留在新的String实例中。 正确?
System.out.println(i);
String getMe = keyboard.nextLine();
skillAssign[i] = new String(getMe);
System.out.println(skillAssign[i]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.