java do while循环可以';t访问变量
我正在用java编写一个简单的文件I/O程序,我的程序允许用户输入他们想要编辑的文件(这将是我使用FileReader读入的文件)。但是,我希望不断提示用户输入文件名,直到他们输入有效的文件(已经存在的文件)。出于某种原因,我的编译器(Eclipse)告诉我“布尔变量loopFlag未在任何地方使用” 当我运行程序时,如果用户输入了错误的输入(不存在的文件),程序将正确运行并再次提示用户输入文件名。但是,如果用户输入了正确的输入(一个已经存在的文件),程序将无限循环,并且仍然提示用户输入文件名。这是我的密码:java do while循环可以';t访问变量,java,variables,file-io,filereader,do-while,Java,Variables,File Io,Filereader,Do While,我正在用java编写一个简单的文件I/O程序,我的程序允许用户输入他们想要编辑的文件(这将是我使用FileReader读入的文件)。但是,我希望不断提示用户输入文件名,直到他们输入有效的文件(已经存在的文件)。出于某种原因,我的编译器(Eclipse)告诉我“布尔变量loopFlag未在任何地方使用” 当我运行程序时,如果用户输入了错误的输入(不存在的文件),程序将正确运行并再次提示用户输入文件名。但是,如果用户输入了正确的输入(一个已经存在的文件),程序将无限循环,并且仍然提示用户输入文件名。
String fileName;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // read in user input
boolean loopFlag; // compiler says this is not used anywhere, but I use it in my do-while loop?!?!
do
{
loopFlag = false;
System.out.println("Please enter the file name you wish to edit (including extension):");
fileName = br.readLine(); // set fileName equal to user input
// this try catch block is to make sure that the file exists
try
{
FileReader fr = new FileReader(ManipulateText.readFileName);
fr.close();
}
catch (FileNotFoundException fnfe)
{
System.err.println("No file found: " + fileName);
loopFlag = true; // repeats the loop until user enters valid file
}
} while (loopFlag = true);
如果有人能帮忙,我很感激
while (loopFlag = true)
在上面的代码中,将loopFlag布尔值设置为true,不对其进行比较
此代码应为:
while (loopFlag)
or
while (loopFlag == true)
附言:
我的编译器(Eclipse)告诉我“布尔变量loopFlag是
“未使用”
相信你的IDE;),这表明您从未将其用于任何逻辑,您只为其分配了一个值。您在while语句中有错误,它应该是
while(loopFlag)代码>或while(loopFlag==true)代码>语句loopFlag=true
是assignment,具有opoperation值,在本例中为true 将其写为,而(loopFlag)
,您当前仅在每次迭代中为其赋值true
,循环将永远不会停止。你本想让它成为loopFlag==true
,但是在这里没有必要将它与true
进行比较(至少对我来说,读起来不像普通的while(loopFlag)
),它应该是while(loopFlag==true)
或者更好,while(loopFlag)
。当您使用=
时,您正在分配。大多数自尊的IDE(例如Eclipse)将显示一条警告并将其标记为潜在错误,从而为您节省宝贵的时间;-)该死的,所有的时间都是因为一个被遗忘的等号谢谢