Java 文件读取不正确
我读文件有困难。我从文件中获取数据,但当我去显示它们时,输出看起来越来越差。这是我的密码。我不想要一行数字。我只想让它们都像第一行数字一样被处理。我认为printf会有帮助,但它没有Java 文件读取不正确,java,file,output,Java,File,Output,我读文件有困难。我从文件中获取数据,但当我去显示它们时,输出看起来越来越差。这是我的密码。我不想要一行数字。我只想让它们都像第一行数字一样被处理。我认为printf会有帮助,但它没有 File f = new File("divers.dat"); Scanner kb = new Scanner(f); while (kb.hasNext()) { String name = kb.nextLine();
File f = new File("divers.dat");
Scanner kb = new Scanner(f);
while (kb.hasNext()) {
String name = kb.nextLine();
String school = kb.nextLine();
String s1 = kb.next();
String s2 = kb.next();
String s3 = kb.next();
String s4 = kb.next();
String s5 = kb.next();
String s6 = kb.next();
String s7 = kb.next();
String diff = kb.next();
System.out.printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s", name, school, s1, s2, s3, s4, s5, s6, s7, diff);
}
这是我的文件格式:
Lucieta Spinelli
Bryn Mawr College
8 9 8 7 8 8 8 2.5
7 8 7 6 7 7 6 3.7
8 7 6 7 7 6 8 3.2
LiPing Sun
Rutgers University
6.5 5 9.5 7.5 8 8.5 7 2.3
7 9 7.5 9 8.5 6.5 8 2.6
6 4 5 9 7 8 6 3.0
Greg McEntire
University of Southern California
9 8 8.5 9.5 9 9.5 7 2.3
9 7 8 8 7.5 8.5 7.5 2.6
8 8 8 8 8 8 8 3.4
Shiva Vadaparthy
Northwestern University
9 8 9.5 9.5 7.5 8 8.5 3.0
8 9 8.5 7.5 9 8.5 8 3.6
7.5 9 8 7 8.5 8 7 4.1
Elizabeth Bennet
Oxford University
7 8 9 8 7 7 8 2.4
8 8 6 7 9 7 8 2.7
8 7 8 6 9 8 9 3.0
Sofia Berrios
Universidad Simon Bolivar
8.5 7.5 9.5 9 7 8.5 8 2.4
8 7 8 9 8 6 7 3.0
7 5.5 6.5 7 5 6.5 7 3.6
Amir Majid
Reed College
4 5 6 5 3 5 7 2.8
7 6 7 8 7 9 8 2.9
8 9 7 9 8.5 8 9 3.4
James Pajuio
University of Pennsylvania
8 7 8 9 8 6 7 2.8
7.5 9 8 7 8.5 8 7 3.0
7.5 9 8 7 8.5 8 7 4.3
Sharon Lewis
Howard University
8 9 9.5 9 8.5 8 9 2.7
4 5 5.5 7 6.5 4.5 5 3.2
8 7 8 9 8 8 7 4.0
Divya Patel
Temple University
7 9 7.5 9 8.5 6.5 8 2.1
8 7 8 6 9 8 9 2.3
3.5 5.5 4 5 3 4 4.5 4.3
Guo Zhang
Portland State University
5 6 5.5 7 6.5 7 5.5 6 3.0
8 7 8.5 9 7.5 8.5 8 3.2
9 8 9.5 8.5 9 8.5 9.5 4.1
Tomasz Wojaczyk
Tufts University
8 8 7 8 7 8 7 2.6
5 4 5 6 7 5 5 2.9
8 6 6 7 8 7 6 3.6
Lucieta Spinelli
Bryn Mawr College
8
9
8
7
8
8
8
2.5
7 8 7 6 7 7 6 3.7
8
7
6
7
7
6
8
3.2
LiPing Sun
Rutgers
University
6.5
5
9.5
7.5
8
8.5 7 2.3
7 9 7.5 9 8.5 6.5 8 2.6
6
4
5
9
7
8
6
3.0
Greg McEntire
University
of
Southern
California
9
8
8.5
9.5 9 9.5 7 2.3
9 7 8 8 7.5 8.5 7.5 2.6
8
8
8
8
8
8
8
3.4
Shiva Vadaparthy
Northwestern
University
9
8
9.5
9.5
7.5
8 8.5 3.0
8 9 8.5 7.5 9 8.5 8 3.6
7.5
9
8
7
8.5
8
7
4.1
Elizabeth Bennet
Oxford
University
7
8
9
8
7
7 8 2.4
8 8 6 7 9 7 8 2.7
8
7
8
6
9
8
9
3.0
Sofia Berrios
Universidad
Simon
Bolivar
8.5
7.5
9.5
9
7 8.5 8 2.4
8 7 8 9 8 6 7 3.0
7
5.5
6.5
7
5
6.5
7
3.6
Amir Majid
Reed
College
4
5
6
5
3
5 7 2.8
7 6 7 8 7 9 8 2.9
8
9
7
9
8.5
8
9
3.4
James Pajuio
University
of
Pennsylvania
8
7
8
9
8 6 7 2.8
7.5 9 8 7 8.5 8 7 3.0
7.5
9
8
7
8.5
8
7
4.3
Sharon Lewis
Howard
University
8
9
9.5
9
8.5
8 9 2.7
4 5 5.5 7 6.5 4.5 5 3.2
8
7
8
9
8
8
7
4.0
Divya Patel
Temple
University
7
9
7.5
9
8.5
6.5 8 2.1
8 7 8 6 9 8 9 2.3
3.5
5.5
4
5
3
4
4.5
4.3
Guo Zhang
Portland
State
University
5
6
5.5
7
6.5 7 5.5 6 3.0
8 7 8.5 9 7.5 8.5 8 3.2
9
8
9.5
8.5
9
8.5
9.5
4.1
Tomasz Wojaczyk
Tufts
University
8
8
7
8
7
8 7 2.6
5 4 5 6 7 5 5 2.9
8
6
6
7
8
7
6
3.6
以下是输出:
Lucieta Spinelli
Bryn Mawr College
8 9 8 7 8 8 8 2.5
7 8 7 6 7 7 6 3.7
8 7 6 7 7 6 8 3.2
LiPing Sun
Rutgers University
6.5 5 9.5 7.5 8 8.5 7 2.3
7 9 7.5 9 8.5 6.5 8 2.6
6 4 5 9 7 8 6 3.0
Greg McEntire
University of Southern California
9 8 8.5 9.5 9 9.5 7 2.3
9 7 8 8 7.5 8.5 7.5 2.6
8 8 8 8 8 8 8 3.4
Shiva Vadaparthy
Northwestern University
9 8 9.5 9.5 7.5 8 8.5 3.0
8 9 8.5 7.5 9 8.5 8 3.6
7.5 9 8 7 8.5 8 7 4.1
Elizabeth Bennet
Oxford University
7 8 9 8 7 7 8 2.4
8 8 6 7 9 7 8 2.7
8 7 8 6 9 8 9 3.0
Sofia Berrios
Universidad Simon Bolivar
8.5 7.5 9.5 9 7 8.5 8 2.4
8 7 8 9 8 6 7 3.0
7 5.5 6.5 7 5 6.5 7 3.6
Amir Majid
Reed College
4 5 6 5 3 5 7 2.8
7 6 7 8 7 9 8 2.9
8 9 7 9 8.5 8 9 3.4
James Pajuio
University of Pennsylvania
8 7 8 9 8 6 7 2.8
7.5 9 8 7 8.5 8 7 3.0
7.5 9 8 7 8.5 8 7 4.3
Sharon Lewis
Howard University
8 9 9.5 9 8.5 8 9 2.7
4 5 5.5 7 6.5 4.5 5 3.2
8 7 8 9 8 8 7 4.0
Divya Patel
Temple University
7 9 7.5 9 8.5 6.5 8 2.1
8 7 8 6 9 8 9 2.3
3.5 5.5 4 5 3 4 4.5 4.3
Guo Zhang
Portland State University
5 6 5.5 7 6.5 7 5.5 6 3.0
8 7 8.5 9 7.5 8.5 8 3.2
9 8 9.5 8.5 9 8.5 9.5 4.1
Tomasz Wojaczyk
Tufts University
8 8 7 8 7 8 7 2.6
5 4 5 6 7 5 5 2.9
8 6 6 7 8 7 6 3.6
Lucieta Spinelli
Bryn Mawr College
8
9
8
7
8
8
8
2.5
7 8 7 6 7 7 6 3.7
8
7
6
7
7
6
8
3.2
LiPing Sun
Rutgers
University
6.5
5
9.5
7.5
8
8.5 7 2.3
7 9 7.5 9 8.5 6.5 8 2.6
6
4
5
9
7
8
6
3.0
Greg McEntire
University
of
Southern
California
9
8
8.5
9.5 9 9.5 7 2.3
9 7 8 8 7.5 8.5 7.5 2.6
8
8
8
8
8
8
8
3.4
Shiva Vadaparthy
Northwestern
University
9
8
9.5
9.5
7.5
8 8.5 3.0
8 9 8.5 7.5 9 8.5 8 3.6
7.5
9
8
7
8.5
8
7
4.1
Elizabeth Bennet
Oxford
University
7
8
9
8
7
7 8 2.4
8 8 6 7 9 7 8 2.7
8
7
8
6
9
8
9
3.0
Sofia Berrios
Universidad
Simon
Bolivar
8.5
7.5
9.5
9
7 8.5 8 2.4
8 7 8 9 8 6 7 3.0
7
5.5
6.5
7
5
6.5
7
3.6
Amir Majid
Reed
College
4
5
6
5
3
5 7 2.8
7 6 7 8 7 9 8 2.9
8
9
7
9
8.5
8
9
3.4
James Pajuio
University
of
Pennsylvania
8
7
8
9
8 6 7 2.8
7.5 9 8 7 8.5 8 7 3.0
7.5
9
8
7
8.5
8
7
4.3
Sharon Lewis
Howard
University
8
9
9.5
9
8.5
8 9 2.7
4 5 5.5 7 6.5 4.5 5 3.2
8
7
8
9
8
8
7
4.0
Divya Patel
Temple
University
7
9
7.5
9
8.5
6.5 8 2.1
8 7 8 6 9 8 9 2.3
3.5
5.5
4
5
3
4
4.5
4.3
Guo Zhang
Portland
State
University
5
6
5.5
7
6.5 7 5.5 6 3.0
8 7 8.5 9 7.5 8.5 8 3.2
9
8
9.5
8.5
9
8.5
9.5
4.1
Tomasz Wojaczyk
Tufts
University
8
8
7
8
7
8 7 2.6
5 4 5 6 7 5 5 2.9
8
6
6
7
8
7
6
3.6
我想您必须从打印语句中删除所有新行元素
\n
:
System.out.printf(“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+“%s”+”+“+”,名称,学校,s1,s2,s3,s4,s5,s6,s7,diff)
在每次迭代中,您的代码读取两个完整的行元素加上八个数字,但您的文件每个块有24个数字。根据,查找并返回来自此扫描仪的下一个完整标记。同时将此扫描仪推进到当前行,并返回跳过的输入
在您的情况下,输入是重复2行字符串(姓名和学校)和3行数字(每行8个数字)。您选择使用nextLine
读取2行字符串(姓名和学校),使用next
读取所有数字。下面是您共享的示例代码中的问题,我们将解决这些问题:
nextLine
(使用新行\n
)和next
(不使用新行\n
)的混合,因此需要小心并正确使用所有新行\n
。例如,在阅读了8个数字之后,您仍然需要阅读一行新行
\n
。下一次调用nextLine
(这将使扫描仪前进到当前行,并返回跳过的输入值)。如果在读取8个数字后未调用nextLine
,则扫描器将不会使用输入中这8个数字后的新行\n
。并且当您在下一次迭代中尝试通过调用nextLine
读取名称时,它将按照您的期望使用上一新行,而不是包含下一个名称的行\n
在printf
的最后一行缺少,因此下一次迭代中的名称将打印在新行上文件f=新文件(“divers.dat”);
扫描仪kb=新扫描仪(f);
while(kb.hasNext()){
字符串名称=kb.nextLine();
字符串school=kb.nextLine();
System.out.printf(“%s\n%s\n”,名称,学校);
对于(int i=0;i<3;i++){//fix for point#1,读取24个数字,而不仅仅是8个
字符串s1=kb.next();
字符串s2=kb.next();
字符串s3=kb.next();
字符串s4=kb.next();
字符串s5=kb.next();
字符串s6=kb.next();
字符串s7=kb.next();
字符串diff=kb.next();
kb.nextLine();//修复点#2
系统输出打印F(“%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n”,s1、s2、s3、s4、s5、s6、s7、差异);
//第3点的修正-------------------------------^
//但是,如果新行上不需要所有数字,则使用此选项
//我建议使用与名称和学校类似的nextLine()
//而不是多个后续呼叫
//系统输出打印F(“%s%s%s%s%s%s%s%s%s%s\n”,s1、s2、s3、s4、s5、s6、s7,差异);
}
}
参考文献:
Lucieta Spinelli
Bryn Mawr College
8 9 8 7 8 8 8 2.5
7 8 7 6 7 7 6 3.7
8 7 6 7 7 6 8 3.2
LiPing Sun
Rutgers University
6.5 5 9.5 7.5 8 8.5 7 2.3
7 9 7.5 9 8.5 6.5 8 2.6
6 4 5 9 7 8 6 3.0
Greg McEntire
University of Southern California
9 8 8.5 9.5 9 9.5 7 2.3
9 7 8 8 7.5 8.5 7.5 2.6
8 8 8 8 8 8 8 3.4
Shiva Vadaparthy
Northwestern University
9 8 9.5 9.5 7.5 8 8.5 3.0
8 9 8.5 7.5 9 8.5 8 3.6
7.5 9 8 7 8.5 8 7 4.1
Elizabeth Bennet
Oxford University
7 8 9 8 7 7 8 2.4
8 8 6 7 9 7 8 2.7
8 7 8 6 9 8 9 3.0
Sofia Berrios
Universidad Simon Bolivar
8.5 7.5 9.5 9 7 8.5 8 2.4
8 7 8 9 8 6 7 3.0
7 5.5 6.5 7 5 6.5 7 3.6
Amir Majid
Reed College
4 5 6 5 3 5 7 2.8
7 6 7 8 7 9 8 2.9
8 9 7 9 8.5 8 9 3.4
James Pajuio
University of Pennsylvania
8 7 8 9 8 6 7 2.8
7.5 9 8 7 8.5 8 7 3.0
7.5 9 8 7 8.5 8 7 4.3
Sharon Lewis
Howard University
8 9 9.5 9 8.5 8 9 2.7
4 5 5.5 7 6.5 4.5 5 3.2
8 7 8 9 8 8 7 4.0
Divya Patel
Temple University
7 9 7.5 9 8.5 6.5 8 2.1
8 7 8 6 9 8 9 2.3
3.5 5.5 4 5 3 4 4.5 4.3
Guo Zhang
Portland State University
5 6 5.5 7 6.5 7 5.5 6 3.0
8 7 8.5 9 7.5 8.5 8 3.2
9 8 9.5 8.5 9 8.5 9.5 4.1
Tomasz Wojaczyk
Tufts University
8 8 7 8 7 8 7 2.6
5 4 5 6 7 5 5 2.9
8 6 6 7 8 7 6 3.6
Lucieta Spinelli
Bryn Mawr College
8
9
8
7
8
8
8
2.5
7 8 7 6 7 7 6 3.7
8
7
6
7
7
6
8
3.2
LiPing Sun
Rutgers
University
6.5
5
9.5
7.5
8
8.5 7 2.3
7 9 7.5 9 8.5 6.5 8 2.6
6
4
5
9
7
8
6
3.0
Greg McEntire
University
of
Southern
California
9
8
8.5
9.5 9 9.5 7 2.3
9 7 8 8 7.5 8.5 7.5 2.6
8
8
8
8
8
8
8
3.4
Shiva Vadaparthy
Northwestern
University
9
8
9.5
9.5
7.5
8 8.5 3.0
8 9 8.5 7.5 9 8.5 8 3.6
7.5
9
8
7
8.5
8
7
4.1
Elizabeth Bennet
Oxford
University
7
8
9
8
7
7 8 2.4
8 8 6 7 9 7 8 2.7
8
7
8
6
9
8
9
3.0
Sofia Berrios
Universidad
Simon
Bolivar
8.5
7.5
9.5
9
7 8.5 8 2.4
8 7 8 9 8 6 7 3.0
7
5.5
6.5
7
5
6.5
7
3.6
Amir Majid
Reed
College
4
5
6
5
3
5 7 2.8
7 6 7 8 7 9 8 2.9
8
9
7
9
8.5
8
9
3.4
James Pajuio
University
of
Pennsylvania
8
7
8
9
8 6 7 2.8
7.5 9 8 7 8.5 8 7 3.0
7.5
9
8
7
8.5
8
7
4.3
Sharon Lewis
Howard
University
8
9
9.5
9
8.5
8 9 2.7
4 5 5.5 7 6.5 4.5 5 3.2
8
7
8
9
8
8
7
4.0
Divya Patel
Temple
University
7
9
7.5
9
8.5
6.5 8 2.1
8 7 8 6 9 8 9 2.3
3.5
5.5
4
5
3
4
4.5
4.3
Guo Zhang
Portland
State
University
5
6
5.5
7
6.5 7 5.5 6 3.0
8 7 8.5 9 7.5 8.5 8 3.2
9
8
9.5
8.5
9
8.5
9.5
4.1
Tomasz Wojaczyk
Tufts
University
8
8
7
8
7
8 7 2.6
5 4 5 6 7 5 5 2.9
8
6
6
7
8
7
6
3.6