繁体   English   中英

Java manipulatin扫描仪输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM