我想编写一个扫描文件每一行的代码,然后它接受每一行并扫描它上面的每个下一个标记(通过指定的分隔符),然后将标记与输入进行比较,如果没有匹配的话移动到下一行..等等。但是,我无法想到任何其他不涉及嵌套循环的方法!还有其他方法或更好的方法吗?
try {
Scanner scan = new Scanner(CLOCK_TIME);
while (scan.hasNext()) {
//scan next line
//scan all specified tokens from each line
//if no match repeat, otherwise break
}
}
答案 0 :(得分:0)
使用内循环,这是该工具的用途(对于我的生活,我不知道为什么你担心使用它)。只需确保在内部循环结束后关闭内部扫描仪时关闭内部扫描程序,并且外部扫描程序也是如此。
Scanner fileScanner = new Scanner(someFile);
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
Scanner innerScanner = new Scanner(line);
while (innerScanner.hasNext()) {
// do whatever
}
innerScanner.close();
}
fileScanner.close();
答案 1 :(得分:0)
您可以使用split
函数拆分该行,但是您仍然必须使用循环来迭代生成的数组。
为了便于查看,您可以将line
传递给具有内部嵌套循环的函数。
即
Scanner fileScanner = new Scanner(someFile);
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
scanLine(line) // call the inner loop function
}
fileScanner.close();
...
private void scanLine(String line) {
Scanner innerScanner = new Scanner(line);
while (innerScanner.hasNext()) {
// inner nested loop code inside separate function
}
innerScanner.close();
}
听起来你想要做什么,没有内循环就没办法处理这条线。
答案 2 :(得分:0)
除非我误解了您的问题,否则您想知道用户输入是否在一行中,如果不是,则跳过它。为什么不使用String.contains()
来确定用户输入是否在行中?
try {
Scanner scan = new Scanner(CLOCK_TIME);
while (scan.hasNext()) {
String line = scan.nextLine();
if (line.contains(userInput) {
// Do something
}
}
}