Java 使用分隔符分隔模式
我有一个文本文件,我试图读取字符串和整数输入使用扫描仪。我需要用逗号分隔数据,还有换行符的问题。以下是文本文件内容: 约翰·史密斯,90岁 埃里克·琼斯,85岁 我的代码: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
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,但无论如何,谢谢。