2016-10-22 3 views
0

나는 총소득 및 부양 가족 수에 근거하여 소득세를 계산하는 방법을 쓰고 있습니다. 다음 코드를 컴파일하고 컴파일 할 때 dTaxOnIncome 변수가 초기화되지 않습니다.소득세 계산 방법 작성. 변수가 초기화되지 않았습니다

public static double incomeTax(double gross, int dependents) 
{ 
      double dTaxOnIncome;    // holds the calculated income tax. 

      if(gross >= 10000 && dependents == 0) 
      { 
       dTaxOnIncome = gross * .25; 
      } 
      else 
      { 
       if((gross >= 10000) && ((dependents >= 1 && dependents <= 4))) 
       { 
        if(dependents == 1) 
        { 
         dTaxOnIncome = gross * .24; 
        } 
        else 
        { 
         if(dependents == 2) 
         { 
          dTaxOnIncome = gross * .23; 
         } 
         else 
         { 
          if(dependents == 3) 
          { 
           dTaxOnIncome = gross * .22; 
          } 
          else 
          { 
           if(dependents == 4) 
           { 
            dTaxOnIncome = gross * .21; 
           } 
           else 
           { 
            if(dependents == 5) 
            { 
             dTaxOnIncome = gross * .205; 
            } 
            else 
            { 
             if(dependents == 6) 
             { 
              dTaxOnIncome = gross * .20; 
             } 
             else 
             { 
              if(dependents > 6) 
              { 
               dTaxOnIncome = gross * .18; 
              } 
              else 
              { 
              } 

             } 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
    return dTaxOnIncome;  
}// end incomeTax (double, int) 

는 내가 다른 진술 경우 사용할 수 있다는 것을 알고 있지만, 나는이 문제를 여러 가지 방법을 시도하고이 가장 곧장 앞으로 것 같았다.

+1

줄을'double dTaxOnIncome = 0.0; ' – sunkuet02

+1

이러한 조건 중 어느 것도 충족되지 않으면 어떻게됩니까? 어떤 가치가 반환되어야합니까? Java가 그 가치를 알아야한다고 생각하는 이유는 무엇입니까? – Pshemo

+0

오류 메시지를 잘못 인용하지 마십시오. 그것은 그것이 말하는 것이 아닙니다. 다시 봐. 그것이 실제로 말하는 것과 당신의 솔루션을 이해하십시오. – EJP

답변

2

Java의 로컬 변수는 사용하기 전에 암시 적으로 초기화해야합니다. 코드에서 dTaxOnIncome 변수를 미리 초기화하지 않았으므로 Java는 나중에 초기화 할 것인지 확인하려고하지만 Java가 이러한 상황을 고려하도록 변수가 초기화되지 않는 것으로 나타납니다. 이러한 실행의 경우 값에 액세스하는 것이 문제입니다.

이 당신의 코드가 작동 할 것입니다 선언

일부 기본값을 추가하고 싶어 기본값을하지 않는 경우 다음 변수가 어떤 실행 경로에 상관없이 초기화하지 얻을 있는지 확인 할 수 있습니다 귀하의 프로그램이 소요됩니다.

+1

"마지막 else 블록을 제외한 모든 곳"이 참이 아니라 초기화되지 않은 두 가지 시나리오가 있습니다. 다른 하나는 다음이 거짓 일 때입니다 :'(총액 = 10000) && ((피부양자 = 1 && 피부양자 = 4)))' –

+0

오, 알려 주셔서 감사합니다. 나는 모바일에서 응답했고 코드를 완전히 볼 수 없었다. – Moonstruck

+0

"코드가 마지막 else 블록으로 들어가고 변수가 초기화되지 않는 한 가지 상황이 여전히 오도하지 않습니다. –

0
public static double incomeTax(double gross, int dependents){ 
     double dTaxOnIncome=0.0; 
     // if gross is less than 10000 there is no tax deduction 
     if(gross<10000) return dTaxOnIncome; 

     //gross is larger or equal to 10000 
     //calculate tax deduction according to number of depedents 

     if(dependents==0){ 
      dTaxOnIncome = gross * .25; 
     } 
     if(dependents==1){ 
      dTaxOnIncome = gross * .24; 
     } 
     if(dependents==2){ 
      dTaxOnIncome = gross * .23; 
     } 
     if(dependents==3){ 
      dTaxOnIncome = gross * .22; 
     } 
     if(dependents==4){ 
      dTaxOnIncome = gross * .21; 
     } 
     if(dependents==5){ 
      dTaxOnIncome = gross * .205; 
     } 
     if(dependents==6){ 
      dTaxOnIncome = gross * .20; 
     }   
     if(dependents>6){ 
      dTaxOnIncome = gross * .18; 
     } 

     return dTaxOnIncome; 

} 
관련 문제