【发布时间】:2016-04-11 00:48:38
【问题描述】:
我试图返回一个字符串是否出现在文件的任何行中,如果有的话,打印出它出现的行。
目前,在控制台中,它会打印我的 if 和 else 语句的输出。我不知道我哪里出错了。我想要true 或false,而不是两个值。这是我在控制台中得到的:
0: - String False 1: File String, ThisString String False
这是我的方法:
public void checkString() {
int line = 0;
//fileString = false;
while (scanner.hasNext()) {
String str = scanner.nextLine();
System.out.println(line + ": " + str);
line++;
if (str.contains(string)) {
System.out.println("File String," + string);
fileString = true;
} else {
System.out.println("String False");
}
}
}
显然还有额外的代码,这是我挂断的部分。它遵循我从中读取的特定文件的路径。关于这个问题的更多细节:如果代码为真,我想执行一个操作,如果为假或在else 语句中,我想执行一个完全不同的操作。
【问题讨论】:
-
嗯,你在一个循环中,第一次通过循环它打印一个东西,第二次它打印另一个东西。这就是为什么你会看到两个输出。听起来您想在循环外部而不是内部打印一些东西,但是您的问题完全不清楚,我不知道您要完成什么。
-
我试图让代码读取我已经完成的文件。然后,我希望代码将每一行与我在课堂上声明的字符串变量进行比较。如果 .contains 行包含我的字符串,反之亦然,我希望它告诉我该字符串存在于文件中,如果它不存在,那么我希望它告诉我它不存在。我在上面用简单的代码尝试了这个过程,但有点困惑。
-
因此,如果该行包含字符串,那么您就知道该文件包含该字符串,因此您不必再读取该文件的任何内容,对吗?您可以使用
break语句。另一方面,在您阅读整个文件之前,您无法判断该文件不包含该字符串。所以说文件不包含字符串的行直到循环之后才能打印出来。 -
您好,Cameron,请查看我对您的问题所做的更改。我已经改写了一些内容并改进了格式 - 我认为这样应该更清楚,并且您获得好的答案的可能性应该会提高。显然,如果您认为可以进一步改进,请随时再次编辑。
标签: java while-loop contains