제목에 대해 유감스럽게 생각합니다. 전화를해야할지 모르겠습니다.switch 문에서 절을 사용할 수 없으면 어떻게해야합니까?
내 문제는 이것이다, 나는 무작위로 그렇게 입력 질문을 선택 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 문을 부울 값을 반환하는 메서드로 이동 한 경우 (질문에 추가 된 값 또는 'do something'이 무엇이든간에 참, 그렇지 않으면 false) 무엇을할까요? 그런 다음 루프를 완료하고 완료 될 때까지 해당 메소드를 호출 할 수 있습니다 (점검 할 정보를 알려주는 정보가 충분하지 않음). 참고, 귀하의 코드에서 루프를 시도하고 문제를 일으킬 수있는 가능한 질문을 얻기 위해 임의의 숫자를 시도하는 경우 ... –