タイトルには申し訳ありませんが、私は何を呼び出すべきかわかりませんでした。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
しかし、これは非常に非効率的なコードであり、代替手段は何ですか?
それぞれのケースで有効になっているかどうかを確認するのではなく、switch文の前でチェックを行うだけでいいですか? –
私は可能ですが、すべての組み合わせに対してswitch文を作成しない限り、あまり役に立ちません。 – Derek
私はあなたが達成しようとしていることについて100%明確ではないと思います。しかし、switch文をブール値を返すメソッドに移動した場合(真偽が追加された場合はtrue、何かの場合はfalse)、どうすればよいでしょうか?その後、ループバックして終了するまでそのメソッドを呼び出すことができます。あなたのコードから、あなたが問題を起こす可能性のある質問を得るための試みで乱数を繰り返しループし続けるなら、あなたのコードから注意してください。 –