2017-10-26 7 views
-3

私は繰り返しユーザーデータを収集し、y/n質問でループを中断または続行するようJavaコードを作成しました。しかし、コードは分岐しているように見えます:ループで実行するだけでなく、残りのコードを同時に実行します。なぜこのforループは 'break'や制限を超えて壊れないのですか? - Java

for(i = 0; i < alphabetLength; i++){ 

...

continueQuery = JOptionPane.showInputDialog("Another activity? (y/n)"); 
     if ("y".equals(continueQuery)) { 
      } 
     else if ("n".equals(continueQuery)){ 
      //i = i + 30; 
      //break; 
     } 
+2

私はその質問を理解していません。具体的に[mcve]を提供してください。 – shmosel

+0

elseif条件文が '' 'false''になった場合、コードがループを継続する唯一の方法です。おそらく、あなたはキャプティアル「N」を入力していますか? –

+0

ループ・ブレイク・メソッドの1つを使用してコードを実行すると、ループが継続され、同時に残りのコードも実行されます。私はなぜ、どのように変更するかを知りたいです。 –

答えて

0

あなたは明らか憶測や仮定のために物事を残し、ここで全体像を示すいません。それは質問をするのが本当に貧しい方法ですが、私はこのポケを与えることは少なくありません。

入力ダイアログを使用すると、ユーザに別のアクティビティを利用したいかどうかを単に尋ねるのに奇妙なオプションです。ユーザーが単に入力ダイアログを閉じてnullを返すだけであれば、何が起こるか考えましたか?入力ダイアログを閉じるだけで、"n" ......と入力するのと同じであると考えるべきですか?ユーザーが空白のように "y"または "n"以外を入力した場合はどうなりますか?その後何が起こるのでしょうか?ここで考慮する必要があるものはたくさんあります。もっと(不要な)コード。

for (int i = 0); i < alphabetLength; i++) { 
    ..............................    
    ..............................    
    String continueQuery = JOptionPane.showInputDialog("Another activity? (y/n)"); 
    if ("y".equals(continueQuery)) { 
     continue; 
    } 
    else if ("n".equals(continueQuery) || continueQuery == null){ 
     break; 
    } 
    ..............................    
    ..............................   
} 

は、私が何を探していることは forループに文のコールの後、すべてのループコードをスキップして、すぐにそのループの次の繰り返しにジャンプするループを引き起こしcontinueキーワードだと思います

内に条件を追加したことに注意してください。の場合は、入力ダイアログウィンドウを閉じるだけです。ああ、もしのループがのループから抜け出るようにしたいのであれば、"n"が供給されたら、の中断のコメントを単にアンコメントするだけです。入力ダイアログの呼び出しは、あなたのためループ内の最後のコードがある場合はもちろん

、その後、あなたは文句を言わない文を続ける必要がある、あなたは文句を言わないで、「Y」をチェックするために必要なすべての次の反復からとにかく自動的に起こります。あなただけの必要があるでしょう:

if ("n".equals(continueQuery) || continueQuery == null){ 
      break; 
} 

私が先に言ったように、ユーザーが唯一の「y」をまたはいずれかの入力が必要とされているので入力ダイアログを使用すると、プロンプトのこの種のために使用するための奇妙な選択肢であります"n"はいまたはいいえ

for (int i = 0); i < alphabetLength; i++) { 
    ..............................    
    ..............................    
    int userOption = JOptionPane.showConfirmDialog(null, "Would you like another Activity?", 
      "Another Activity?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); 
    if (userOption == JOptionPane.YES_OPTION) { 
     continue; 
    } 
    else if (userOption == JOptionPane.NO_OPTION) { 
     break; 
    } 
    ..............................    
    ..............................   
} 
:より良いオプションは、ユーザーがありません
はいのいずれかを選択するオプションを持って、あなたが好きなら、おそらくは、このような何かを [キャンセル]ボタンをとして代わりにどこシンプルConfirm Dialogを使用することです
関連する問題