从文件中收集数据会在Java中返回一个空字符串

时间:2018-02-24 08:36:56

标签: java file file-io java.util.scanner

我正在尝试使用一组句子和限制器从文件中返回数据。以下是我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==

2 个答案:

答案 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()