2017-12-10 15 views
0

"マシン"(すべてのタイプ)のアレイリストに対して "ジョブ"の配列リストをチェックしようとしているところです。ジョブの最初の3文字がマシンの最初の3文字と一致するとPRTジョブコードはコードPRTのマシンにのみ割り当てることができます)。私はそれが仕事を受け入れるようにしたいが、もしそうでなければ、利用可能な機械がないというメッセージを印刷したい。私は取得しています問題は、それはなりますので、それがループを周回するたびにメッセージをプリントアウトしていることである結果を繰り返さずに2つのforループを検索します。

public void assignJob() { 
    for(Job j : jobs) { 
      String jobCode = j.getCode().substring(0, 3); 
      for(Machine m : machines) { 
       String machineCode = m.getCode().substring(0,3); 
       if (jobCode.equals(machineCode)){ 
        m.acceptJob(j); 
        System.out.println("The job " + j.getCode() + " has been 
assigned to a machine."); 
        break; 
       } 

      else {   
      System.out.println("Sorry there is no machine available to accept the type of job: " + j.getCode()); 
      } 
     } 
    } 
} 

:私はだけなので、これが最善の方法ではないかもしれない数週間のカップルのためのJavaを勉強されています4回目に正しいマシンを見つけてから、そのジョブが受け入れられたと言う前に、3回利用可能なマシンはありません。私は本当にメッセージを1回だけ必要とし、それは検索して何も見つけていない。

ご協力いただければ幸いです。

答えて

0

boolean found = falseを使用します。 outer forループの上にあるif文のelse部分を外側forループの下に移動し、if文にします。あなたがあなたの試合を見つけたら、found = trueをセットしてください。ブレークループ。次に、見つかったかどうかを確認し、見つからなければメッセージを表示します。

関連する問題