我有一个在while循环中设置的变量,因为它是从文件中读取的。我需要访问和使用循环外部的代码,因为我在if语句中使用变量而if语句不能在while循环中,否则它将重复多次。这是我的代码。
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\Users\\Brandon\\Desktop\\" + Uname + ".txt"));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}if(sCurrentLine.contains(pwd)){System.out.println("password accepted");}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
答案 0 :(得分:1)
将if语句放在for循环中,但使用break:
while...
if(sCurrentLine.contains(pwd)){
System.out.println("password accepted");
break;
}
这会突破for循环,因此一旦找到密码,它就会停止循环。你不能在循环之外移动那个if-check,因为你想要检查每一行的密码,直到找到它,对吗?
如果您这样做,则不需要将sCurrentLine
变量移出循环。如果您想sCurrentLine.equals(pwd)
而不是使用contains
,也可能需要进行双重检查。
答案 1 :(得分:1)
您已经在while循环之外声明了sCurrentLine
。问题是你一直在下一行继续使用它。如果你仍然希望它打印文件,你要做的是记住找到了密码或找到了它的代码:
BufferedReader br = null;
boolean pwdFound = false;
String pwdLine = "";
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\Users\\Brandon\\Desktop\\" + Uname + ".txt"));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
if(sCurrentLine.contains(pwd)){
System.out.println("password accepted");
pwdFound = true;
pwdLine = sCurrentLine;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
答案 2 :(得分:1)
boolean flag = false; while((sCurrentLine = br.readLine())!= null){
if(sCurrentLine.contains(pwd))
{
flag = true;
break;
}
} if(flag){System.out.println(“password accepted”);}