Java扫描程序分隔符

时间:2010-09-10 19:43:13

标签: java

任何可以帮助我使用java.util.Scanner类的人 我无法弄清楚如何使用分隔符方法。

输入:teamA-teamB 4-5

输出:teamA:teamB:4:-5

预期产出:teamA:teamB:4:5

我的代码:

public void readResult(){
   String team1, team2;
   int goals1, goals2;
   Scanner scanner = new Scanner(System.in);
   scanner.useDelimiter("\\s*-\\s*");
   if (scanner.hasNext()){
      team1 = scanner.next();
      scanner.useDelimiter("\\d*-\\d*");
      if(scanner.hasNext()){
         team2 = scanner.next().trim();
         scanner.useDelimiter("-");
         if(scanner.hasNext()){
            goals1 = scanner.nextInt();
            scanner.useDelimiter("\\n");
            if(scanner.hasNext()){
               goals2 = scanner.nextInt();
               System.out.println(team1 + ":" +  team2 + ":" + goals1 + ":" + goals2);
               scanner.close();
               return;
            }
         }
      }
   }
   scanner.close();
   System.out.println("bad format");
}

1 个答案:

答案 0 :(得分:0)

我个人会使用正则表达式和组匹配来执行此操作,但如果您要使用扫描程序,请不要专注于使用分隔符,请使用hasNext(String)next(String)方法进行匹配,检索下一个模式。

正则表达式与分组示例:

    String input  ="teamA-teamB 4-5";
    String team1, team2;
    int goals1, goals2;

    Matcher matcher = 
        Pattern.compile("(.*?)\\s*-\\s*(.*?)\\s*(\\d*)\\s*-\\s*(\\d*)")
        .matcher(input);
    if ( matcher.matches() ) {
        team1 = matcher.group(1);
        team2 = matcher.group(2);
        goals1 = Integer.parseInt(matcher.group(3));
        goals2  = Integer.parseInt(matcher.group(4));
        System.out.println(team1 + ":" +  team2 + ":" + goals1 + ":" + goals2);
    }