2017-05-15 9 views
1

ここに最初の質問がありますので、無礼にしてください...私のif-elseステートメントは一度しか動作しません

とにかく、私は最近、if/elseの問題を発見しました。下に書かれたコードを表示します。問題は、私の祖父が一度しか働かない場合です。私はレジスタから一致する単語を書いたとき、elseはもう動作しません。それはコード内の任意のエラーですか、それとも私を盗んでいるnetbeansですか?私が得ることができるどんな助けにも感謝します。 質問は非常に明確ではありません

private void årsök_txfActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     int söktår = Integer.valueOf(årsök_txf.getText()); 
     info_txa.setText(""); 
     for (Register register1 : register) { 
      int finns = register1.getAr(); 
      if (finns==söktår) { 
       info_txa.append(register1 + ""); 
       hittad = true; 
      } else if (hittad==false) { 
       info_txa.setText("Tyvärr så utgavs det inga filmer "+söktår); 
      } 
     } 
    } catch (NumberFormatException e) { 
     JOptionPane.showMessageDialog(null, "Vänligen mata in ett tal som sökt utgivningsår!"); 
    } 
} 
+0

が、それはケースどこを持っていないことを計画しました最初のifを入力しませんが、 'hittad == true'はどこに入りますか?なぜなら、最初の 'if'文を入力するとすぐに' if(hittad == false) 'コードブロックを入力することはないからです。 – AntonH

+0

を 'if'に' hittad'を 'true'に設定し、' else if'が 'false'をチェックするので、最初の' if'を一度ヒットした後、 'else if'は' hittadはfalseです。 'hittad'はクラス内で定義されているようですので、' false'に戻すコードがない限り、常に 'true'と' else if'を打つことはできません。 – litelite

+0

もし私があなたを正しく理解したら、いいえ。私はhittad == trueの場合はしたくない。私のプログラムが特定の年の後に検索するようにしてください。私はプログラムには特定の年が含まれていますが、そうでなければ「検索した年は見つかりませんでした」がスウェーデン語であることをユーザーに伝えたいと思います。しかし問題は最初の試合までしか動作しないということです。プログラムが空白の答えを出すだけです... –

答えて

2

...あなたはそれがスウェーデンに書かれているにもかかわらず、構文を理解することができます願っています。しかし、これは間違いなくコーディングエラーであり、Netbeansとは関係ありません。これは私が理解したものです。これがあなたが意味するものであることを確認してください: 登録がsöktårと一致する単語を含むと、それ以降はelse-ifブロックは実行されません。

実行されませするelse if理由はhittadがfalseの場合にのみ実行されることをである、とあなたが一致するものを見つけたら、あなたはそれがその後else-ifブロックに入ることはありませんので、真であるとhittadを設定します。

+0

あなたは私の質問を正しく受け入れてくれました。あなたは解決策もあります。速い応答と助けのためにあまりにも多くのliteliteありがとう! –

+0

「タイマー」がなくなるのを待っていました。 –

1

あなたのifブロックに問題があります。あなたは 'hittad = true'を割り当てていますが、もう一度リセットしていません。もしあなたのelseが 'hittad == false'ブロックはifブロックコードの実行後には決して実行されません。 希望それはあなたのために役立ちます。私はあなたが達成しようとしているものあなたのコメントから理解していれば

+0

まさに、ありがとうございます。私のコードで問題が発生するたびに、気になるトンネルビジョンが私を襲ってくる... –

0

、おそらくループが大幅ので(のみ示す一般的な構成例)のように簡略化することができます

Boolean found = false; 

for(obj : objects) 
    if (obj.equals(searchCriteria)) { 
     found = true; 
     break; 
    } 

if (!found) 
    system.out.println("object not found."); 
+0

それは本当に見えて、私が得ることができる喜んで喜んで受け入れている。 –

関連する問題