2012-02-15 8 views
0

タイトルには申し訳ありませんが、私は何を呼び出すべきかわかりませんでした。switch文でclauseを無効にした場合の対処方法

私の問題はこれです、私はランダムように入力し、質問を選択し、switchステートメントがあります。これは、ランダムに質問を選択し、次のアレイに追加された何

questionType[count] = rad.nextInt(4); 

     switch (questionType[count]) 
     { 
     case 0: 

       questionArray[count] = new Times(count + 1); 
       ((Times) questionArray[count]).askQuestion(question); 
       break; 

     case 1: 

       questionArray[count] = new Add(count + 1); 
       ((Add) questionArray[count]).askQuestion(question); 
       break; 

     case 2: 

       questionArray[count] = new Minus(count + 1); 
       ((Minus) questionArray[count]).askQuestion(question); 
       break; 

     case 3: 

      questionArray[count] = new Divide(count + 1); 
      ((Divide) questionArray[count]).askQuestion(question); 
      break; 

     } 

を、ここにありますpesudocodeバージョン:私は有効にすることを置けばいいのか

questionType = random(4) 

case questionType == 0 
do something 
break 

case questionType == 1 
do something 
break 

case questionType == 2 
do something 
break 

case questionType == 3 
do something 
break; 

さて、私は任意の1代または2のを望んでいないと言うことができますか?

START: 

    questionType = random(4) 


     case questionType == 0 
    if(0 enabled) 
    { 
     do something 

     break 
    } 

     case questionType == 1 
    if(1 enabled) 
    { 
     do something 
     break 
    } 

     case questionType == 2 
    if(2 enabled) 
    { 
     do something 
     break 
    } 


     case questionType == 3 
    if(3 enabled) 
    { 
     do something 
     break; 
    } 
else goto start 

しかし、これは非常に非効率的なコードであり、代替手段は何ですか?

+0

それぞれのケースで有効になっているかどうかを確認するのではなく、switch文の前でチェックを行うだけでいいですか? –

+0

私は可能ですが、すべての組み合わせに対してswitch文を作成しない限り、あまり役に立ちません。 – Derek

+0

私はあなたが達成しようとしていることについて100%明確ではないと思います。しかし、switch文をブール値を返すメソッドに移動した場合(真偽が追加された場合はtrue、何かの場合はfalse)、どうすればよいでしょうか?その後、ループバックして終了するまでそのメソッドを呼び出すことができます。あなたのコードから、あなたが問題を起こす可能性のある質問を得るための試みで乱数を繰り返しループし続けるなら、あなたのコードから注意してください。 –

答えて

0

質問の店舗がある場合は、 を実装する方法はいくつかありますか、それが有効になっているかどうか。 それから抽出を有効にして、それをradの引数として使用します。 を有効にすると、有効な質問は3 & 4となりますが、有効な質問のリストでは0 & 1の位置になります。

0

'Enabled'ブール値のグローバルまたは静的配列。 'Enabled'配列の真の値を扱うインデックスを取得するまで、乱数生成を回ります。特別なケースのために有効な選択肢の総数をカウントしておく - '0' - エラーを返すか例外を発生させ、無限ループを防止し、有効な選択肢を見つける無駄な試み。

関連する問題