2016-05-13 15 views
-2

私は単純なファイル入出力プログラムを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); 

誰もが、私はそれを感謝し、助けることができる場合。上記のコードで

+5

'while(loopFlag)'と書くと、現在のところ、反復ごとに 'true'が割り当てられており、ループは決して停止しません。あなたは 'loopFlag == true'としてそれを持つことを意図しましたが、' true'との比較はここでは不要です(そして、少なくとも私にとっては普通の 'while(loopFlag)'と読むのはいいとは言えません) – SomeJavaGuy

+1

'while(loopFlag == true)'またはそれより良い、 'while(loopFlag)'です。 '= 'を使うときはあなたは*を割り当てています。 – RealSkeptic

答えて

5
while (loopFlag = true) 

あなたは loopFlagブール値を設定されているような真、ませはそれを比較

このコードは次のようになります。

while (loopFlag) 
or 
while (loopFlag == true) 

PS:

私のコンパイラ(Eclipse)は私に "ブール変数loopFlagは 」

トラストあなたのIDEで使用されていない;)、それはあなたが唯一のそれに値を割り当てられ、あなたが任意のロジックのためにそれを使用したことがないことを示唆しました。

+2

ほとんどの自己尊重IDE(Eclipseなど)は警告を表示し、これを潜在的なエラーとしてマークして貴重な時間を節約します;-) – Falco

+0

忘れてしまった等号のためだけに費やされた時間 ありがとう –

1

whileステートメントでエラーが発生しました。while (loopFlag);またはwhile (loopFlag == true);ステートメントloopFlag = trueは必須であり、この場合はtrueです。

関連する問題