Java 如何使用扫描仪检查线端?

Java 如何使用扫描仪检查线端?,java,java.util.scanner,Java,Java.util.scanner,我搜索过类似的问题,但没有一个有用 考虑一个文件: 你好吗? 你在哪里 我想在每条生产线结束后做一些操作。如果我使用next()它不会告诉我何时到达第一行的末尾 我也看到了hasNextLine(),但它只告诉我是否存在另一行。考虑使用多个扫描仪,一个用于获取每一行,另一个用于在收到每一行后扫描每一行。我必须给出的唯一警告是,您必须确保在使用完内部扫描仪后关闭它。实际上,在使用完扫描仪后,您需要关闭所有扫描仪,尤其是内部扫描仪,因为它们可能会累积并浪费资源 e、 g 您可以逐行扫描文本,并使用S

我搜索过类似的问题,但没有一个有用

考虑一个文件:

你好吗?
你在哪里

我想在每条生产线结束后做一些操作。如果我使用
next()
它不会告诉我何时到达第一行的末尾


我也看到了hasNextLine(),但它只告诉我是否存在另一行。

考虑使用多个扫描仪,一个用于获取每一行,另一个用于在收到每一行后扫描每一行。我必须给出的唯一警告是,您必须确保在使用完内部扫描仪后关闭它。实际上,在使用完扫描仪后,您需要关闭所有扫描仪,尤其是内部扫描仪,因为它们可能会累积并浪费资源

e、 g


您可以逐行扫描文本,并使用
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
    }
}

我不确定这是否相关,或者读到这篇文章时已经太晚了。我对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);
     }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner`在这里输入代码`
公共班机{
公共静态void main(字符串[]args){
列表名称=新的ArrayList();
扫描仪输入=新扫描仪(System.in);
字符串eof=“”;
做{
字符串in=input.nextLine();
名称。添加(in);
eof=input.findInLine(“/”);
}而(eof==null);
System.out.println(名称);
}
}

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

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

我也是这么想的,但是我想一些简单的函数可能会有帮助,因为这很费时。谢谢+1@yoohoo:我不确定它是如何耗时的,因为它只需要几行代码,而且运行速度相当快。不客气,顺便说一句。@hovercraftfullofels-Hehe耗时我是说w.r.t CPU的东西。如果有很多线,时间消耗将成正比。不是吗?@yoohoo:不,一点也不。上面代码中唯一真正耗时的是磁盘I/O访问,与此相比,读取后所做的处理微不足道。我想你担心的是完全错误的事情。过于复杂,保持简单,使用扫描器和hasNextLine和NextLine你在每一行的末尾有并且只有一个问号(?)吗?@niculare hehe..不..可能会改变。如果是这样的话,我知道会很简单。
        Scanner scanner = new Scanner(new File("your_file"));
        while(scanner.hasNextLine()){
            String line = scanner.nextLine();
            // do your things here
        }