私は単純なファイル入出力プログラムをJavaで書いています。私のプログラムでは、編集したいファイルを入力することができます(これは私が読み込んだファイルです私のFileReaderを使って)。しかし、有効なファイル(すでに存在するファイル)を入力するまで、ユーザーにファイル名の入力を促していきたい。何らかの理由で、私のコンパイラ(Eclipse)は、 "boolean変数loopFlagはどこにも使われていません"と私に伝えています。java do 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