Java 使用分隔符分隔模式

Java 使用分隔符分隔模式,java,java.util.scanner,Java,Java.util.scanner,我有一个文本文件,我试图读取字符串和整数输入使用扫描仪。我需要用逗号分隔数据,还有换行符的问题。以下是文本文件内容: 约翰·史密斯,90岁 埃里克·琼斯,85岁 我的代码: public class ReadData { public static void main(String[] args) throws Exception { java.io.File file = new java.io.File("scores.txt"); Scann

我有一个文本文件,我试图读取字符串和整数输入使用扫描仪。我需要用逗号分隔数据,还有换行符的问题。以下是文本文件内容:

约翰·史密斯,90岁 埃里克·琼斯,85岁

我的代码:

public class ReadData {
  public static void main(String[] args) throws Exception {
      java.io.File file = new java.io.File("scores.txt");
      Scanner input = new Scanner(file);
      input.useDelimiter(",");
      while (input.hasNext()) {
          String name1 = input.next();
          int score1 = input.nextInt();
          System.out.println(name1+" "+score1);
      }
      input.close();
  }
}
例外情况:

Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Unknown Source)
        at java.util.Scanner.next(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at ReadData.main(ReadData.java:10)

将类java.util.Scanner的分隔符设置为逗号,意味着对方法next的每次调用都将读取下一个逗号之前的所有数据,包括换行符。因此,对nextInt的调用读取下一行的分数加上名称,而这不是int。因此出现InputMismatchException

只需阅读整行内容并在逗号处拆分即可,。 注意:下面的代码使用

公共类读取数据{ 公共静态无效主字符串[]args引发异常{ java.io.File File=new java.io.Filescores.txt; 尝试扫描仪输入=新建扫描仪文件{ //input.useDelimiter,;Use,|\\n RegExp分隔符:

public class ReadData {
  public static void main(String[] args) throws Exception {
    java.io.File file = new java.io.File("scores.txt");
    Scanner input = new Scanner(file);
    input.useDelimiter(",|\\n");
    while (input.hasNext()) {
        String name1 = input.next();
        int score1   = Integer.parseInt(input.next().trim());
        System.out.println(name1+" "+score1);
    }
    input.close();
  }
}
试试这个

String text = "John T Smith, 90\r\n"
            + "Eric K Jones, 85";
Scanner input = new Scanner(text);
input.useDelimiter(",\\s*|\\R");
while (input.hasNext()) {
    String name1 = input.next();
    int score1 = input.nextInt();
    System.out.println(name1+" "+score1);
}
input.close();
输出:

John T Smith 90
Eric K Jones 85

你能在线程主java中分享错误日志吗?util.mismatchExceptionNo,我的意思是,你能编辑问题并添加完整的日志来帮助我们理解错误的具体位置吗?我现在已经这么做了。很抱歉,从命令PromptHanks复制时遇到问题。你是个救命恩人。从来没有想过将它作为一整行传递字符串,然后将其拆分为一个数组,您可以在参考资料中使用。我非常接近于拥有相同的代码,唯一的问题是我没有调用trim方法,所以我得到了numberformatexception,但无论如何,谢谢。