2011-08-09 11 views
2

このページでは、2つのチェックボックスのいずれかを5回選択する必要があります。だから私はこれを書いた:ループ使用中不明

 if (box1a.isSelected() == true || box1b.isSelected() == true) { 
      if (box2a.isSelected() == true || box2b.isSelected() == true) { 
       if (box3a.isSelected() == true || box3b.isSelected() == true) { 
        if (box4a.isSelected() == true || box4b.isSelected() == true) { 
         if (box5a.isSelected() == true || box5b.isSelected() == true) { 


           with some other things he does when it is true. 


     } else { 
      new Error("You must select an answer at all the questions"); 
     } 

あなたがトップのチェックボックスの1つをチェックしないと、彼はエラーを返します。それからcleary私はそこにループが必要ですが、私はそれを行う方法を知らない。私はwhileループの仕組みを知っていますが、この状況でどのように見えるかはわかりません。助けてください

また、私はテキストフィールドで同じことをしなければなりません。同じメソッドを使用して、私はあなたが答えてくれました。助言?

+0

whileループは必要ありません。あなたが必要とするのはただ一つの 'if '条件です。 – adarshr

+0

あなたの質問ではありませんが、' == true'は冗長です。各行を 'box1.isSelected()||に単純化することができます。 box2.isSelected() ' – eternalmatt

答えて

1
if ((box1a.isSelected() || box1b.isSelected()) && 
    (box2a.isSelected() || box2b.isSelected()) && 
    (box3a.isSelected() || box3b.isSelected()) && 
    (box4a.isSelected() || box4b.isSelected()) && 
    (box5a.isSelected() || box5b.isSelected())) 
    { 
     //true stuff 
    } 
    else 
    { 
     new Error("You must select an answer at all the questions"); 
    } 

あなたは ==と真をテストしないべきではありませんでし 必要があります。貧弱なスタイルで、戻り値を使用するほうが良いです。​​

+0

** '決して' **は厳しい言葉です。 – Neal

+0

harshnessが編集されました:) –

+0

私は後で、テキストフィールドが動作しなかったという同じ方法を使ってみました... if(answer1.getText()。length()!= 0) &&(answer2。 getText()。length()!= 0)、助言を試しましたか(> 0)? –

0

この場合、ラジオボタン(デフォルトのラジオボタンをオンにしてください)を使用してください。

+0

uhm 2のチェックボックスは、ラジオボックスよりもユーザーフレンドリーで、見た目がよく、見た目も良かったですが、tnx –

+0

...ラジオボタンがこのケース(選択肢が1つ必要)で行われ、チェックボックスは複数選択のために行われます。人々が知っていることを考えて、あなたがよりよく見えるとは思わない;) –

+0

笑私はかなり良いプログラムをしたい!!!!!笑:) tnx私はそれを覚えています。 –

1
if ((box1a.isSelected() == true || box1b.isSelected() == true) && 
    (box2a.isSelected() == true || box2b.isSelected() == true) && 
    (box3a.isSelected() == true || box3b.isSelected() == true) && 
    (box4a.isSelected() == true || box4b.isSelected() == true) && 
    (box5a.isSelected() == true || box5b.isSelected() == true)) { 
     //DO SOMETHING IF TRUE 
} 
else { 
     new Error("You must select an answer at all the questions"); 
} 

ませループに必要な^ _^

0

一般的な戦略は、このような何かないだろう:

bool flag = true; 
do{ 
    //search for input 
    if (/*the input is valid*/) 
     flag = false; 
}while (flag); 

しかし、あなたのハードコード非常に多くのオプションがあれば、あなたは間違ったデザインを持っているかもしれません。 Jerome C.のようなラジオボタンのようなものを試してみてください。

0
if(!box1a.isSelected() && !box1b.isSelected()) { 
    // You must select an answer at all the questions 
} 
else if (box1a.isSelected() && box1b.isSelected() && box2a.isSelected() && box2b.isSelected() && box3a.isSelected() && box3b.isSelected() && box4a.isSelected() && box4b.isSelected() && box5a.isSelected() && box5b.isSelected()) { 
    // with some other things he does when it is true. 
} 

ここで注意する点がいくつかあります。彼らは通常、本物のjava.lang.Errorロジックを使用しているよう

  1. Errorのようなクラス名を使用しないでください。
  2. ブール値の場合は、==演算子を使用する必要はありません。
+0

本当にありがとう。しかし、私はちょうどそれをダブル、本当にそのようなハッスルではなく、感謝の言葉を入力します –

0

whileループを使用する理由がわかりません。あなたの条件(5つすべての質問に答えた)が満たされていないときに、ユーザーが「ループにとどまる」必要があると考えている場合、それは不要です。 Event Dispatch Thread(EDT)は引き続き「ループ」を実行します。

一方、すべてのチェックボックスを確認するコンパクトな方法を探している場合は、それらがどのように宣言されているかを変更することができます(仮定します)。javax.swing.JCheckbox box1a;等を固定配列またはArrayListに渡すことができます。これをforループで繰り返すことができます。

関連する問題