如何使用扫描仪检查行结束?(How to check the end of line using S

2019-07-20 21:04发布

找遍了类似的问题,但没有帮助。

考虑一个文件:

你好你好吗?
当时你在哪里?

我想每一行结束后做一些操作。 如果我使用next()它不会告诉我,当我已经达到了第一行的末尾。

此外,我所看到的hasNextLine()但如果存在另一条线或不它只是告诉我。

Answer 1:

考虑使用一个以上的扫描仪,一个让每一行,另通过各行扫描你已经收到了上去。 我必须给唯一需要注意的是,你必须确保以关闭内扫描你使用它完成之后。 其实你需要关闭所有扫描器你使用它们完成后,尤其是内扫描仪,因为它们可以积少成多,浪费资源。

例如,

Scanner fileScanner = new Scanner(myFile);
while (fileScanner.hasNextLine()) {
  String line = fileScanner.nextLine();

  Scanner lineScanner = new Scanner(line);
  while (lineScanner.hasNext()) {
    String token = lineScanner.next();
    // do whatever needs to be done with token
  }
  lineScanner.close();
  // you're at the end of the line here. Do what you have to do.
}
fileScanner.close();


Answer 2:

可扫描通过线的文本行,并使用在令牌拆分每行String.split()方法。 这样,你知道,当一个行已经结束,并且还对每行所有的标记:

Scanner sc = new Scanner(input);
while (sc.hasNextLine()){
    String line = sc.nextLine();
    if (line.isEmpty())
        continue;
    // do whatever processing at the end of each line
    String[] tokens = line.split("\\s");
    for (String token : tokens) {
        if (token.isEmpty())
            continue;
        // do whatever processing for each token
    }
}


Answer 3:

不知道当我读这本是相关的或过晚。 我是比较新到Java,但这似乎为我工作时,我遇到了类似的问题。 我只是用一个do-while循环利用简单的字符串表示的文件说明符的结束。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;`enter code here`

public class Main {
    public static void main(String[] args) {
        List<String> name = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        String eof = "";

        do {
            String in = input.nextLine();
            name.add(in);
            eof = input.findInLine("//");
        } while (eof == null);

        System.out.println(name);
     }
}


Answer 4:

您可以使用扫描仪和你所提到的方法:

        Scanner scanner = new Scanner(new File("your_file"));
        while(scanner.hasNextLine()){
            String line = scanner.nextLine();
            // do your things here
        }


文章来源: How to check the end of line using Scanner?