Method parameter mismatch: Required double, no arg

2019-03-07 01:26发布

I am almost complete but when I compile I get the error "Method getUserTax in class IncomeTax cannot be applied to given types; required double; found: no arguments; reason: actual and formal argument lists differ in length" I've gone over my code multiple times and I cannot find where the error is located. It is near the end of the code on the line "userTax = test.getUserTax();

import java.util.Scanner;  //Needed for the Scanner Class
/**
 * Write a description of class IncomeTax here.
 * 
 * @author CD
 * 11/30/2012
 * The IncomeTax class determines how much tax you owe based on taxable income.
 */
public class IncomeTax
{
    private int income;

    /** 
     * The constructor accepts an argument for the income field.
     */
    public IncomeTax(int i)
    {
        income = i;
    }
    /**
    * The setIncome method accepts an argument for the income field.
    */
    public void SetIncome(int i)
    {
        income = i;
    }
    /**
     * The getIncome method returns the income field.
     */
    public double getIncome()
    {
        return income;
    }
    /**
     * The getUserTax returns the tax for the income.
     */
    public static double getUserTax(double income)
    {
        double userTax = 0.10;
        if (income > 250000.0) {
            userTax = 0.35;
        } else if(income > 130000.0) {
            userTax = 0.33;
        } else if(income > 60000.0) {
            userTax = 0.28;
        } else if(income > 30000.0) {
            userTax = 0.25;
        } else if(income > 10000.0) {
            userTax = 0.15;
        }
    return userTax;
}
/**
 * This program uses the IncomeTax class to determine the Income tax for the user's 
income.
 */
public static void main(String [] args)
{
    int userIncome; //To hold taxable income
    double userTax; //To hold tax

    //Create a Scanner object to read input.
    Scanner keyboard = new Scanner(System.in);

    //Get the Personal Income.
    System.out.print("Enter your taxable income and" + "I will tell you the income tax:");
    userIncome = keyboard.nextInt();

    //Create an IncomeTax object with the numeric score.
    IncomeTax test = new IncomeTax(userIncome);

    //Get the income tax.
    userTax = test.getUserTax();

    //Display the income tax.
    System.out.print("Your income tax is" + test.getUserTax());
}

标签: java bluej
2条回答
Viruses.
2楼-- · 2019-03-07 01:49

Just change this method signature: -

public static double getUserTax(double income)

to: -

public static double getUserTax()

You don't need to pass any income parameter, as that you are already having income as instance attribute in IncomeTax class. And when you invoke this method on an IncomeTax instance: -

test.getUserTax();

the income used in the method is nothing but this.income, which references the instance attribute.

查看更多
狗以群分
3楼-- · 2019-03-07 02:06
userTax = test.getUserTax();

You need to pass double value as parameter to this call. Your getUserTax method defined as double type parameter required.

public static double getUserTax(double income)

Example:

userTax = test.getUserTax(10.0); //Here 10.0 is just for example.

查看更多
登录 后发表回答