如果String输入包含Space,则提示错误

时间:2015-02-09 12:14:38

标签: java string netbeans input

我想阻止用户在Space输入中加入String

我尝试过使用一些方法,例如:

(team1Name.contains(" "))

(team1Name.matches(".*([ \t]).*"))

(team1Name.indexOf(' ') >= 0)但无济于事。


下面是我的代码片段和输出:

代码段:

System.out.print("Name of Team 1: ");
team1Name = sc.next();

if (team1Name.indexOf(' ') >= 0) {
    System.err.println("Error");
    System.out.print("Name of Team 1: ");
    team1Name = sc.next();
}

System.out.print(team1Name+ " Goals: ");

while (true) {
    try {
        team1Goals = Integer.parseInt(sc.next());
        break;
      } catch (NumberFormatException nfe) {
        System.err.println("Error");
        System.out.print(team1Name+ " Goals: ");
      }
}

输出:

Name of Team 1: black sheep 
Error 
black Goals: black Goals:

更新:

尝试使用.nextLine()代替.next()。但是,仍然会收到错误输出:

Name of Team 1: black sheep
Error
Error
[] Goals: [] Goals: 

放置[]以替换原始Space / empty输出

2 个答案:

答案 0 :(得分:2)

Scanner#next()不会返回带空格的字符串,因为空格被视为分隔符,因此对于像black sheep

这样的输入
  • 首次调用next()填充返回black
  • next()的另一次调用将返回sheep

由于您的第二次next()调用的结果被用作Integer.parseInt(...)中的参数,因此此方法无法解析NumberFormatException

使用sheep来代替next()从行读取整个字符串。

答案 1 :(得分:1)

这是因为您使用扫描程序的下一个方法,它只接受第一个令牌,在这种情况下:黑色。这显然不包含空格。 如果您想要整个输入,请使用nextLine()