2016-12-02 15 views
0

私は仕事をしていて、私の人生のために大きな問題を抱えています。私が今収集したことから、JOptionPanesを使用しているときに私のforループを終了することはできません。なぜなら、コードがすぐ下にあっても何らかの理由で決して到達しないからです。JOptionPanesを使用するときにforループを中断するにはどうすればよいですか?

私のコードの目的は、.CSVファイルを反復することです。ユーザーは一連の入力を入力します。特に、重複をチェックしています。重複が見つかったら、表示しますJOptionPane.showMessageDialogを呼び出し、メッセージが表示された後にforループを解除します。

しかし、私のメッセージダイアログはループしていて、それ以上は行っていないので、私は間違っているように固執しています。ここで

は私のコードです:私の文書は「6」が含まれており、私はそれを検索する場合

JOptionPane.showMessageDialog(null, myPanel, "Edit Fruit", JOptionPane.INFORMATION_MESSAGE); 

     for (row = 0; row < myEntries.size(); row++) 
     { 
      for (column = 0; column < myEntries.get(row).length; column++) 
      { 
       //If serial exists 
       if (myEntries.get(row)[column].trim().equals(newSerial.getText())) 
       { 
        //break loop 
        JOptionPane.showMessageDialog(null, "Serial already exists!"); 
        break; 
       //If the serial does not exist, write this new line to the end of the file   
       }else if (!(myEntries.get(row)[column].trim().equals(newSerial.getText()))) 
       { 
        System.out.println(row); 
        myEntries.add(new String[] {newSerial.getText(), dateFormat.format(newDate), newLocation.getText(), 
        "",newAllocation, newCondition, newType.getText(), newComments.getText()}); 
       } 

      } 

、このコードはいくつかの理由でステートメントの両方を通った場合に反復し、ちょうど中断されません。

私のforループは、ユーザーの入力から完全に一致するまでテキストファイルを繰り返します。重複が見つからない場合は、新しいコード行をファイルの末尾に追加します。

私はここからどこへ行くのか分からないので、ここの誰かが助けてくれることを願っています。

さらに詳しい情報が必要な場合は、私に知らせてください。この問題を解決して解決することができます。

ありがとうございます。

答えて

3

あなたが最初のループをbreakする場合は、あなたがlabels

OUTER: for (row = 0; row < myEntries.size(); row++) { 
    for (column = 0; column < myEntries.get(row).length; column++) { 
     // If serial exists 
     if (myEntries.get(row)[column].trim().equals(newSerial.getText())) { 
      // break loop 
      OptionPane.showMessageDialog(null, "Serial already exists!"); 
      break OUTER; 
     // If the serial does not exist, write this new line to the end of the file 
     } else if (!(myEntries.get(row)[column].trim().equals(newSerial.getText()))) { 
      System.out.println(row); 
      myEntries.add(new String[] { newSerial.getText(), dateFormat.format(newDate), newLocation.getText(), "", newAllocation, newCondition, newType.getText(), newComments.getText() }); 
     } 

    } 
} 
+1

内側ループは使用されていないので、外側ループにのみラベルが必要であることに注意してください。また、この構造の最も一般的な規則は、外側ループ "OUTER"にラベルを付けてOUTERを破ることです。 – mtj

1

もう1つ必要ですbreak

for (row = 0; row < myEntries.size(); row++) 
{ 
    for (column = 0; column < myEntries.get(row).length; column++) 
    { 
     //If serial exists 
     if (myEntries.get(row)[column].trim().equals(newSerial.getText())) 
     { 
      //break loop 
      JOptionPane.showMessageDialog(null, "Serial already exists!"); 
      break; 
      //If the serial does not exist, write this new line to the end of the file   
     } else if (!(myEntries.get(row)[column].trim().equals(newSerial.getText()))) 
     { 
      System.out.println(row); 
      myEntries.add(new String[] {newSerial.getText(), dateFormat.format(newDate), newLocation.getText(), "",newAllocation, newCondition, newType.getText(), newComments.getText()}); 
     } 
    } 
    break; // <- This is required to break from outer loop. 
} 
+0

それが重複を見つけない場合でも、それはまだ行を印刷しに追加、しかし、そう本当にありがとうございましたを使用することができます私のテキストファイル、2回。私は何か間違っているのですか? – juiceb0xk

関連する問題