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
}