嵌套循环的第一个 while 循环只迭代一次
The first while loop of the nested loop iterates only once
在此处比较两个 .txt 文件,如果第二个文件中的任何字符串与第一个文件匹配或重复,则得出第一个文件的行号。
在代码中,第一个 while 循环只迭代一次。
Scanner scanner = new Scanner(firstFile);
Scanner scanner1 =new Scanner(secondFile);
int lineNum = 0;
while (scanner.hasNextLine())
{
String line = scanner.nextLine();
lineNum++;
while (scanner1.hasNextLine())
{
String line1 = scanner1.nextLine();
if(line.contains(line1))
{
System.out.println("Ignore/Review line number: "+lineNum);
}
}
}
您必须在外部 while
循环内创建第二个文件的 Scanner
:
Scanner scanner = new Scanner(firstFile);
int lineNum = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
lineNum++;
Scanner scanner1 =new Scanner(secondFile);
while (scanner1.hasNextLine()) {
String line1 = scanner1.nextLine();
if(line.contains(line1)) {
System.out.println("Ignore/Review line number: "+lineNum);
}
}
}
否则 scanner1.hasNextLine()
returns false
在外部 while
循环的第二次迭代中,因为整个第二个文件已经在外部 while
循环的第一次迭代中读取循环。
这个问题与第二个 while 循环永远不会被取消有关。因此,当您在文件 2 中找到匹配的行时,您继续将文件 1 的行与文件 2 中的所有其他行进行比较。您可能想要的是这样的:
if(line.contains(line1))
{
System.out.println("Ignore/Review line number: "+lineNum);
break;
}
之后,您可以继续比较文件 1 的下一行和文件 2 的下一行。
第二个文件的 Scanner
在外部文件的第一个循环期间读取整个文件 amd 到达文件末尾(下一个外部 while 循环没有可读取的内容)。您应该在外部 while 循环的主体中创建第二个 Scanner
以使其在每次外部循环开始时从头开始读取所选的第二个文件。
在此处比较两个 .txt 文件,如果第二个文件中的任何字符串与第一个文件匹配或重复,则得出第一个文件的行号。
在代码中,第一个 while 循环只迭代一次。
Scanner scanner = new Scanner(firstFile);
Scanner scanner1 =new Scanner(secondFile);
int lineNum = 0;
while (scanner.hasNextLine())
{
String line = scanner.nextLine();
lineNum++;
while (scanner1.hasNextLine())
{
String line1 = scanner1.nextLine();
if(line.contains(line1))
{
System.out.println("Ignore/Review line number: "+lineNum);
}
}
}
您必须在外部 while
循环内创建第二个文件的 Scanner
:
Scanner scanner = new Scanner(firstFile);
int lineNum = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
lineNum++;
Scanner scanner1 =new Scanner(secondFile);
while (scanner1.hasNextLine()) {
String line1 = scanner1.nextLine();
if(line.contains(line1)) {
System.out.println("Ignore/Review line number: "+lineNum);
}
}
}
否则 scanner1.hasNextLine()
returns false
在外部 while
循环的第二次迭代中,因为整个第二个文件已经在外部 while
循环的第一次迭代中读取循环。
这个问题与第二个 while 循环永远不会被取消有关。因此,当您在文件 2 中找到匹配的行时,您继续将文件 1 的行与文件 2 中的所有其他行进行比较。您可能想要的是这样的:
if(line.contains(line1))
{
System.out.println("Ignore/Review line number: "+lineNum);
break;
}
之后,您可以继续比较文件 1 的下一行和文件 2 的下一行。
Scanner
在外部文件的第一个循环期间读取整个文件 amd 到达文件末尾(下一个外部 while 循环没有可读取的内容)。您应该在外部 while 循环的主体中创建第二个 Scanner
以使其在每次外部循环开始时从头开始读取所选的第二个文件。