我正在尝试使用一组句子和限制器从文件中返回数据。以下是我inputs.txt
的示例。
1
The dog
The cat
The mouse
The mouse
The cow
The boat
第一行作为限制器我试图只获得第一句但它返回一个空字符串。这是我的代码:
import java.io.*;
import java.util.*;
import java.lang.*;
class dep {
public static void main(String args[] ) throws Exception {
int count = 0;
Scanner s = new Scanner(new File("inputs.txt"));
int lim = s.nextInt();
while(s.hasNextLine() && lim != count) {
String line = s.nextLine();
System.out.println(line);
count++;
}
System.out.print("==DONE LOOPING==");
}
}
Output:
<empty_string>
==DONE LOOPING==
Expected output
The dog
==DONE LOOPING==
答案 0 :(得分:1)
nextInt()
不会使用换行符,而nextLine()
会消耗所有内容。在开始循环之前,您需要另一个nextLine()
来使用该换行符:
int lim = s.nextInt();
s.nextLine(); // Consume the newline after the limit
while(s.hasNextLine() && lim != count) {
String line = s.nextLine();
System.out.println(line);
count++;
}
答案 1 :(得分:1)
s.nextInt()
只读取下一个int,剩下的就行了。
所以你的第一遍循环只读取1之后的换行符。
要测试此项,请将第一行更改为
1 foo
并查看您的计划输出的内容。
要解决此问题,请在nextLine()
后执行nextInt()
。