2012-02-15 8 views
0

제목에 대해 유감스럽게 생각합니다. 전화를해야할지 모르겠습니다.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 

그러나 이것은 매우 비효율적 인 코드이며, 고토, 대안은 무엇을 사용?

+0

각각의 경우에 활성화되어 있는지 확인하지 않고 switch 명령문보다 먼저 확인을 수행 할 수 있습니까? –

+0

나는 모든 조합에 대해 switch 문을 작성하지 않으면별로 쓸모가 없을 것입니다. – Derek

+0

나는 당신이 성취하려는 것을 100 % 확실하게 생각하지 않습니다. 그러나 switch 문을 부울 값을 반환하는 메서드로 이동 한 경우 (질문에 추가 된 값 또는 'do something'이 무엇이든간에 참, 그렇지 않으면 false) 무엇을할까요? 그런 다음 루프를 완료하고 완료 될 때까지 해당 메소드를 호출 할 수 있습니다 (점검 할 정보를 알려주는 정보가 충분하지 않음). 참고, 귀하의 코드에서 루프를 시도하고 문제를 일으킬 수있는 가능한 질문을 얻기 위해 임의의 숫자를 시도하는 경우 ... –

답변

0

질문이있는 경우 을 구현하는 몇 가지 방법과 사용 여부가 있습니다. 그런 다음 추출을 활성화하고 rad의 인수로 사용합니다. 이므로 질문을 활성화하면 3 & 4가되지만 사용 가능한 질문 목록에서 0 & 1을 차지합니다.

0

'사용 가능'전역 또는 부울 값의 정적 배열. '사용'배열의 실제 값을 처리하는 인덱스를 얻을 때까지 난수 생성을 반복하십시오. 특별한 경우 ('0') 때문에 유효한 선택 항목의 총 수를 유지하십시오. 오류를 반환하거나 예외를 발생시켜 유효한 선택을 찾기 위해 무한 반복으로 무한 반복을 방지합니다.

관련 문제