我正在用java編寫一個簡單的文件I/O程序,我的程序允許用戶輸入他們希望編輯的文件(這將是我讀取的文件使用我的FileReader)。但是,我想繼續提示用戶輸入文件名,直到他們輸入一個有效的文件(一個已經存在的文件)。出於某種原因,我的編譯器(Eclipse)告訴我,「布爾變量loopFlag沒有被使用」在任何地方。java在while循環中無法訪問變量
當我運行程序時,如果用戶輸入錯誤的輸入(不存在的文件),程序將正常運行並再次提示用戶輸入文件名。但是,如果用戶輸入了一個好的輸入(一個已經存在的文件),程序會無限循環並且仍然提示用戶輸入文件名。這裏是我的代碼:
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',但是與'true'的比較在這裏是不必要的(至少對我來說,讀起來不像只是一個簡單的while(loopFlag)') – SomeJavaGuy
它應該是'while(loopFlag == true)'或更好,'while(loopFlag)'。當你使用'='時,你正在分配*。 – RealSkeptic