如何使方法在语句中起作用

时间:2015-03-13 05:45:35

标签: java variables if-statement methods

我试图让我的方法工作。 我们应该创建一个税级,必须使用一种方法。 (非常不同寻常。我知道。)

我不认为我的变量是正确的,或者我没有在我的方法声明中输入正确的内容。

这也是为什么当我尝试调用它时,它不起作用。

public class Assignment2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);

        double income1;
        double sttax;
        income1=0;
        sttax=0;


        System.out.println("This program is designed to have the user input ");
        System.out.println("their yearly income, and this program will give output for ");
        System.out.println("state and federal tax, gross and net pay for any given numeric input.\n"); 

        income1=in.nextDouble();

        sttax=sttax1(sttax);

        System.out.print(" "+ sttax);

    }
    public static double sttax1 (double income) {

        income=income1;

        if (income<1000)
            sttax=.02*income;

        if (1000>=income && income<2000)                       
            sttax=20+ (.03*(income-1000));

        if (2000>=income && income < 3000);                    
            sttax=50+ (.04*(income-2000));

        if (3000 >= income && income < 10000)                          
            sttax=90+ (.0475*(income-3000));

        if (100000>= income && income< 125000)             
            sttax=4697.50+ (.05*(income-100000));

        if (125000>= income && income < 150000)            
            sttax=5947.50+ (.0525*(income-125000));

        if (150000>= income && income < 250000)        
            sttax=7260.00+ (.055*(income-150000));

        if (income>=250000)                        
            sttax=12760.00+ (.0575*(income-250000));

        return sttax;

    }

}

3 个答案:

答案 0 :(得分:0)

您的代码有几个问题:

  • 您的主要方法最后错过了结束}
  • 您的sttax1方法期望参数income根据income计算税金。当您调用该方法时,您应该使用用户输入的income作为参数。现在您使用sttax作为参数,当您致电sttax1时,该参数始终为0。
  • 修复了sttax1方法的调用后,您只需使用方法参数(income)代替income1

答案 1 :(得分:0)

更改您的代码,如下所示。 方法调用方法内部方法使用变量超出范围不必要地使用变量存在问题

    public class Assignment2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);

        double income1;
        double sttax;
        income1=0;
        sttax=0;


        System.out.println("This program is designed to have the user input ");
        System.out.println("their yearly income, and this program will give output for ");
        System.out.println("state and federal tax, gross and net pay for any given numeric input.\n"); 

        income1=in.nextDouble();

        sttax=sttax1(income1);

        System.out.print(" "+ sttax);

       }
    public static double sttax1 (double income) {
      double sttax=0.0;    
        if (income<1000)
            sttax=.02*income;

        if (1000>=income && income<2000)                       
            sttax=20+ (.03*(income-1000));

        if (2000>=income && income < 3000);                    
            sttax=50+ (.04*(income-2000));

        if (3000 >= income && income < 10000)                          
            sttax=90+ (.0475*(income-3000));

        if (100000>= income && income< 125000)             
            sttax=4697.50+ (.05*(income-100000));

        if (125000>= income && income < 150000)            
            sttax=5947.50+ (.0525*(income-125000));

        if (150000>= income && income < 250000)        
            sttax=7260.00+ (.055*(income-150000));

        if (income>=250000)                        
            sttax=12760.00+ (.0575*(income-250000));

        return sttax;

    }

}

答案 2 :(得分:0)

您正在将用户输入分配给income1,但您不会使用它来调用您的方法。 所以首先应该用正确的参数调用你的方法:

sttax = sttax1(income1);

然后你不需要这一行:

income = income1;

其余的似乎只是数学,所以如果有错误,你应该检查你的计算。除非你的脸上有一个实际的异常,否则你的代码运行正常。

如果你的结果不符合你的预期,也许你也应该考虑懒惰评估。 http://en.wikipedia.org/wiki/Lazy_evaluation