[英]Java manipulatin Scanner input
我是Java的新手,目前正在做入门课程。 我正在制作一个计划,创建两个篮球队,并要求用户输入两支队伍的分数。
要向第一个团队添加分数,用户输入“a”,后跟空格和要添加的点数。 要添加到第二个团队'b',然后使用空格和分数。
现在一切都很好但我希望在用户输入'退出'而不是'a 2'或'b 1'等时完成游戏。
我已经相应地设置了我的课程和方法,但我的问题是它要么很好地添加分数,要么阅读退出并提出最终分数......不是两者兼而有之。
换句话说,我设法正确地存储输入'exit'或'a 2'等,但是无论何时工作,另一个工作都没有。
我玩过各种代码组合但没有工作,这就是我目前所拥有的:
if (keyboard.nextLine().equals("exit")) {
System.out.println("exit");
}
else {
team = keyboard.next();
points = keyboard.next();
System.out.println("not exit");
}
当我在要求分数时输入退出时打印出退出...但是当我输入参数时为'a 2'它只是挂起。
不幸的是,我不允许使用数组。 请帮忙。
你需要这样做
final String input = keyboard.nextLine();
if(input.equals("exit")) {
//do whatever on exit
}
else {
//work with input string, probably using StringTokenizer or something
}
然后检查该行是什么,而不是像现在这样在if语句中执行。
目前您的问题是您正在读取整行,如果它没有exit
,您需要再输入2个字符串而不是使用最后一个。 这就是冻结的原因。
你可以像这样解决它:
String firstToken = keyboard.next();
if (firstToken.equalsIgnoreCase("exit")) {
System.out.println("exit");
}
else {
team = firstToken;
points = keyboard.next();
}
这样做是:
team
,下一个应该是分数。 你打电话时
keyboard.nextLine()
在if
条件下,您告诉扫描仪提供下一行但您不存储结果。 如果它与exit
不匹配,您应该检查该行是什么。 而是再次向扫描仪询问下一个值。
只需要一次就行
String line = keyboard.nextLine();
然后在你的代码中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.