2017-10-28 8 views
-1

나는 소득에 대한 사용자 입력을 받아 소득세를 산출하는 방법을 사용하는 프로그램을 작성 중입니다.C# : Methods WFA 세금 계산 계산기

46 행에 "private double GetTax (double taxable)"이라는 오류가 하나 있습니다. GetTax는 CS0161이며 일부 코드 경로가 값을 반환하지는 않습니다.

GetTax에 대한 참조가 누락 되었습니까? 귀하의 의견은 높이 평가됩니다!

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Lab_4_Part_2_ 
{ 
    public partial class Form1 : Form 
    { 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnCalculate_Click(object sender, EventArgs e) 
     { 
      //Set input and output to floating decimal 
      double taxable = Convert.ToInt32(txtTaxable.Text); 
      GetTax(taxable); 

     } 

     private void EnterNum(double taxable) 
     { 
      throw new NotImplementedException(); 
     } 

     private double GetTax(double taxable) 
     { 


      if (taxable <= 9225) return (taxable * 1.1); 
      if (taxable > 9225 | taxable < 37450) return (922.50 + (taxable * 1.15)); 
      if (taxable > 37450 | taxable < 90750) return (5156.25 + (taxable * 1.25)); 
      if (taxable > 90750 | taxable < 189300) return (18481.25 + (taxable * 1.28)); 
      if (taxable > 189300 | taxable < 411500) return (46075.25 + (taxable * 1.33)); 
      if (taxable > 411500 | taxable < 413200) return (119401.25 + taxable * 1.35); 
      if (taxable > 413200) return (119996.25 + (taxable * 1.396)); 

     } 


     public string DisplayTaxable(double taxable) 
     { 
      return txtOwed.Text; 
     } 

    } 
} 
+0

GetTax 메서드는 double을 반환해야합니다. –

+0

여러 가지 문제가 있습니다. OR과 AND 사이의 차이점을 연구하고 시작하십시오. 그런 다음 컴파일러에서 코드를 보는 방법과 모든'return' 문이'if'에있을 때 생각할 수있는 것에 대해 생각해보십시오. –

+0

오류 메시지는 정확히 무엇을 말하는지 의미합니다. 'GetTax()'메소드에는 메소드가 취할 수있는 값을 반환하지 않는 하나 이상의 코드 경로가 있습니다. 컴파일러는'if' 조건을 분석하지 않아 적어도 하나의'return' 문이 부딪 힐 수 있는지를 논리적으로 증명할 수 있는지를 보지 않습니다. 귀하의 경우에는 마지막'if' 문을 제거하고 무조건'return (119996.25 + (과세 * 1.396)); '을 실행할 수 있습니다.이 오류에 대한 다양한 예제와 해결 방법은 표시된 중복을 참조하십시오. –

답변

1

GetTax() 메서드에서 모든 return 문은 if 블록 안에 래핑됩니다. 즉, if 블록 중 하나도 히트되지 않으면 현재 값이 반환되지 않습니다. 따라서 컴파일 오류.

예를 들어, < = 행 또는 최종 return 문 라인에 당신> 줄을 변환하는 것이 문제를 해결하는 가장 간단한 방법 :

private double GetTax(double taxable) 
{ 
    if (taxable <= 9225) return (taxable * 1.1); 
    //other cases omitted for brevity 
    return (119996.25 + (taxable * 1.396)); 
} 

당신은 그 수익을 서문을 위해 else 문을 사용할 수 있습니다 가치가 있지만 필수는 아니며 더 많은 코드 스타일을 선택해야합니다.

+0

코드에서 오류를 일으킨 것보다 많은 문제점이 있습니다. 예를 들어'if (과세 대상 9225 | 과세 대상 <37450) '를 더 자세히 살펴보십시오. –