2014-07-14 7 views
-2

3 개의 int 값이 주어지면 bc는 합을 반환합니다. 그러나 값 중 하나가 13이면 합계에 포함되지 않고 오른쪽에있는 값은 계산에 포함되지 않습니다. 예를 들어, b가 13이면 b와 c는 모두 계산되지 않습니다. 왼쪽에서 오른쪽으로가 {a, b, c}을 의미 가정럭키 합계 3 개의 값 합계

public static void main(String args[]){ 
    Scanner scanner=new Scanner(System.in); 
    int a,b,c,s; 
    System.out.println("Enter 3 values:"); 
    a=scanner.nextInt(); 
    b=scanner.nextInt(); 
    c=scanner.nextInt(); 
    s=luckySum(a,b,c); 
    } 
    public static int luckySum(int a,int b,int c){ 
      int s = a + b + c; 
       if(s<13){ 
       System.out.println(s); 
      }else if(a==13 && b<=13 && c<=13){ 
       System.out.println("Lucky sum:"+0); 
      }else if(a<=13 && b==13 && c<=13){ 
       System.out.println("Lucky sum:"+0); 
      }else if(a<=13 && b<=13 && c==13){ 
       System.out.println("Lucky sum:"+0); 
      } 
      else{ 
       // do nothing 
      } 

     return s; 

    } 

} 
+3

을 그래서 이 코드는 무엇입니까? 그것의 오류는 무엇입니까? –

+0

귀하의 질문은 무엇입니까? – Henry

답변

1

, 그 긍정적으로 리팩토링에 대한 비명 :

public static int luckySum (int left, int middle, int right) { 
    if (left == 13) return 0; 
    if (middle == 13) return left; 
    if (right == 13) return left + middle; 

    return left + middle + right; 
} 

는 여기에 내가 변경 한 내용입니다. - if/else-if/else 코드의 스파게티처럼 생긴 매쉬를 제거하십시오. - 적절한 변수 이름을 사용하십시오. - 다중 반환을 사용하여 가독성을 위해 코드 수직 공간을 최소화합니다.

누구나 마지막 지점은 좋지 않다는 것을 알려줍니다. 그들이 그렇다면 그들은 왜 을 이해하지 못합니다. 여러 개의 리턴 포인트는 프로그램 흐름을 처리하기가 더 어려워 질 경우에만 좋지 않습니다. 이와 같은 4 줄 함수에서, 0이 일 가능성이 있습니다. 한눈에 모든 제어 흐름을 볼 수 없습니다.

0

b가 13이고 다른 값이 0이 아닌 값이 13보다 크거나 다른 두 값이 0이면 13이됩니다.

int s = a + b + c;

if(s<13) 

이 조건이 더 else if 문을 사용하는 등 앞서가는 당신을 중지하고 있습니다.

if(s<=13)을 사용하면 문제가 해결됩니다. 내가 제대로 질문을 이해 한 경우

0

, 당신은 어떤 수는 합하지 것보다 입력 한 번호가 13 인 경우, 다른 사람이 properly.Try이 코드를 작동해야하는 코드합니다 :

public static void main(String args[]) 
     { 
     Scanner scanner=new Scanner(System.in); 
    int a,b,c,s; 
    System.out.println("Enter 3 values:"); 
    a=scanner.nextInt(); 
    b=scanner.nextInt(); 
    c=scanner.nextInt(); 

    if(a==13 || b==13 || c==13) //if any a , b , c is 13 , your sum function called // 
      { 
       System.out.println("one of value was 13,so no output"); 
      } 

    else //else call sum function and get your result value 
    { 
    s=luckySum(a,b,c); 
    System.out.println("output is"+s); 
    } 

    } 
    public static int luckySum(int a,int b,int c) 
     { 

      int s = a + b + c; 
      return s;  
     }