2012-09-11 6 views
0

좋아,이 코드를 작성하려고하지만이 바보 같은 오류가 계속. 내가 뭘 잘못하고 있는지 잘 모르겠다. 전문가 중 한 명이 나를 도울 수 있을지도 모른다. answer 경우에있어서 promComm자바 오류 누락 반환 계산

import java.util.*; 

public class School 
{ 
Random randQuest = new Random(); 

int userAnswer; 

public void createQuestion() 
{ 

    int range = 10; // range of numbers in question 

    int num1 = randQuest.nextInt(range); 
    int num2 = randQuest.nextInt(range); 

    userAnswer = num1 * num2; 

    System.out.printf("How much is %d times %d?\n", 
     num1, num2); 

} 

// prompt comment 
public String promComm(boolean answer) 
{ 
    if (answer) 
    { 
     switch (randQuest.nextInt(1)) 
     { 

     case 0: 
      return("Very Good!"); 

     } 

     switch (randQuest.nextInt(1)) 
     { 

     case 0:     
      return("No. Please try again."); 

     } 
    } 
} 

}

+0

'return' 괄호를 사용하지 않습니다. –

+0

아래의 정답 중 하나를 사용하여 문제를 해결 한 후 Bob Martin이 지적해야하는 [이 기사] (http://www.informit.com/articles/article.aspx?p=1392524)를 확인하십시오. 부울 인수를 취하는 메서드를 작성하지 마십시오. 그것은 단순히 나쁜 습관입니다. 나는 이것이 비 응답이라는 것을 알고 있지만, 부울 인수를 가진 메소드를 사용하면 처음부터 문제가 생길 수 있습니다! 잘하면이 팁이 유용 할 것입니다. 건배. –

답변

1

이 방법은 임의의 값을 리턴하지 않는 false이다. promComm이 그렇지 않은 모든 경우에 문자열을 반환해야

public String promComm(boolean answer){ 
    if (answer){ 

     switch (randQuest.nextInt(1)){  
      case 0: 
       return("Very Good!"); 
     } 

     switch (randQuest.nextInt(1)){ 
      case 0:     
       return("No. Please try again."); 
     } 

     return "Some value"; 

    }else 

     return "Some value"; 
    } 
1

귀하의 방법처럼 같은 randQuest.nextInt(1) != 0.

가 할 필요가있는 경우 뭔가. 기본 return 문을 추가하는 가장 간단한 방법입니다.

public String promComm(boolean answer){ 
    if (answer){ 
     //... 
    } 
    return "default value when answer is false."; 
} 
1

promComm 메서드는 문자열을 반환하지만 전환 값이 0이 아닌 경우 함수는 아무 것도 반환하지 않습니다. 기본 반환 문은 없습니다.

1

이 방법은 모든 코드의 흐름이 값을 반환해야 반환 형식이있는 경우-else 문

public String promComm(boolean answer){ 

    if(answer){ 
     ... 

    }else{ 

     ... 
    } 

return ""; //empty string <-- you are missing a default return statement 
} 
+0

이유를 제공해서는 안됩니까? 왜? – SiB

+0

이 코드는 동일한 이유로 컴파일되지 않습니다. – zerkms

+0

@zerkms : 당신은 이것을 시도 할 수 있습니다 –

1

반환에게 문자열 결과를 작성하려고합니다. 대답이 false이면 코드에 promComm()이 실행되지 않고 값을 반환하지 않습니다!

다음은 메소드에서 다중 반환을 사용하지 않는 것이 좋습니다!

예를 들어, 당신은 이것을 방지 할 수 있습니다

public String promComm(boolean answer) { 
    String returnValue = "Answer is false"; //or = "" 
if (answer) 
{ 
    switch (randQuest.nextInt(1)) 
    { 

    case 0: 
     returnValue = "Very Good!"; 

    } 

    switch (randQuest.nextInt(1)) 
    { 

    case 0:     
     returnValue = "No. Please try again."; 

    } 
} 
return returnVal; 
} 
1

후이

public String promComm(boolean answer) 
    { 
     if (answer) 
     { 
      switch (randQuest.nextInt(1)) 
      { 
       case 0: return("Very Good!"); 
      } 
      switch (randQuest.nextInt(1)) 
      { 
       case 0: return("No. Please try again."); 
      } 
     } 
     return ""; 
    }