Java 为什么在读取多行文本文件时会出现InputMismatchException?
我用它来读取文本文件。文本文件本身:Java 为什么在读取多行文本文件时会出现InputMismatchException?,java,Java,我用它来读取文本文件。文本文件本身: public static void main(String[] args) { try { Scanner scan = new Scanner(new File("members.txt.txt")); while (scan.hasNextLine()) { scan.useDelimiter(",");
public static void main(String[] args) {
try {
Scanner scan = new Scanner(new File("members.txt.txt"));
while (scan.hasNextLine())
{
scan.useDelimiter(",");
String name = scan.next();
int admin = scan.nextInt();
int analyst = scan.nextInt();
int creative = scan.nextInt();
System.out.println("I am here");
int finisher = scan.nextInt();
System.out.println("name: "+name+"admin "+admin+"analyst "+analyst+"creative "+creative+"finisher "+finisher);
}
} catch (Exception e) {
e.printStackTrace();
}
}
它会引发异常,我不知道为什么,但当文件看起来像这样时:
Mona,2,10,8,10
Morten,5,5,15,5
Lisa,12,8,2,8
Vanessa,20,5,1,4
Yoana,10,10,5,5
Krassimira,20,1,1,8
Baltmore,3,0,0,0
COca,4,1,5,20
Pasi,5,5,5,15
我的意思是,只要一行代码就行了。我真的很想得到一个好的答案,如果你注意到,例如,某些部分有5米
finisher的编号与名称粘在一起,代码的工作方式让我发疯
Mona,2,5,18,5Peter,10,8,0,12Jacob,2,5,18,3nikos
您扫描的第五个元素5Peter
应该是int
:
Mona,2,5,18,5Peter
但是它会得到一个
字符串。也许这就是问题所在。看起来5
和Peter
之间缺少一个逗号,因此它将两个元素作为一个元素,并尝试将它们视为int
,但由于缺少逗号,因此会得到一个字符串。您已将分隔符定义为“,”。因为行间没有“,”字,扫描器将下一行的最后一个字和第一个字视为同一个字。Mona,2,10,8,10 Morten,5,5,15,5 Lisa,12,8,2,8 Vanessa,20,5,1,4 Yoana,10,10,5,5 Krassimira,20,1,1,8 Baltmore,3,0,0,0 COca,4,1,5,20 Pasi,5,5,5,15第一次代码出现在多行上,第二次是大行。文本文件空间中的行是分隔的还是新行分隔的?从您的帖子中,似乎每一行都是空格分隔的。您使用的分隔符是“,”,但您的文件也包含行分隔符作为分隔符。为什么您的文件会更改其内容?你只是在读。因此,您应该将写入/更改文件的代码添加到question.public void writeToFile(){FileWriter output;try{output=newfilewriter(new file(fileMembers));for(int i=0;iint finisher = scan.nextInt();