Java 使用getmethods&;作为扫描仪变量输入;设置方法

Java 使用getmethods&;作为扫描仪变量输入;设置方法,java,java.util.scanner,getter-setter,Java,Java.util.scanner,Getter Setter,我试图创建一个类Tax,它使用scanner变量从用户那里获取工资和税率,并使用用户的输入提供税后工资 我得到的错误是set方法不能用于使用scanner变量。请提出解决方案 代码如下: package new_version; import java.util.Scanner; class Tax { private int salary; private double rate; private double posttaxsal; public int

我试图创建一个类
Tax
,它使用scanner变量从用户那里获取工资和税率,并使用用户的输入提供税后工资

我得到的错误是set方法不能用于使用scanner变量。请提出解决方案

代码如下:

package new_version;
import java.util.Scanner;

class Tax
{
    private int salary;
    private double rate;
    private double posttaxsal;

    public int getSalary()
    {
        return salary;
    }

    public double getRate()
    {
        return rate;
    }

    public void setSalary(int newSalary)
    {
        salary = newSalary;
    }

    public void setRate(double newRate)
    {
        rate = newRate;
    }

    public double posttaxsal()
    {
        posttaxsal = salary - (salary*rate);
        return posttaxsal;
    }
}

public class Taxusinginput {

    public static void main(String[] args) {

        Tax test = new Tax();

        Scanner s = new Scanner(System.in);
        Scanner r = new Scanner(System.in);

        test.setSalary(s);
        test.setRate(r);
    }
}

setSalary
需要一个int参数,而不是
扫描仪
。您应该向它传递一个
int

例如:

test.setSalary(s.nextInt());
这同样适用于
setRate

除此之外,没有理由创建两个Scanner实例

public static void main(String[] args) {

    Tax test = new Tax();

    Scanner s = new Scanner(System.in);

    test.setSalary(s.nextInt());
    test.setRate(s.nextDouble());
}

setSalary
需要一个int参数,而不是
扫描仪
。您应该向它传递一个
int

例如:

test.setSalary(s.nextInt());
这同样适用于
setRate

除此之外,没有理由创建两个Scanner实例

public static void main(String[] args) {

    Tax test = new Tax();

    Scanner s = new Scanner(System.in);

    test.setSalary(s.nextInt());
    test.setRate(s.nextDouble());
}

正如我在前面的评论中提到的,您的函数需要int和double,而不是Scanner对象。
使用和

工作示例:

import java.util.Scanner;

public class Taxusinginput {

    public static void main(String[] args) {

        Tax test = new Tax();

        // Use only one scanner
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter salary: ");
        test.setSalary(sc.nextInt());

        System.out.print("Enter rate: ");
        test.setRate(sc.nextDouble());

        System.out.println("Post-tax salary: " + 
                test.posttaxsal());

        sc.close();
    }
}

class Tax {
    private int salary;
    private double rate;
    private double posttaxsal;

    public int getSalary() {
        return salary;
    }

    public double getRate() {
        return rate;
    }

    public void setSalary(int newSalary) {
        salary = newSalary;
    }

    public void setRate(double newRate) {
        rate = newRate;
    }

    public double posttaxsal() {
        posttaxsal = salary - (salary * rate);
        return posttaxsal;
    } 
}
Enter salary: 1000
Enter rate: 0.02
Post-tax salary: 980.0
输入/输出:

import java.util.Scanner;

public class Taxusinginput {

    public static void main(String[] args) {

        Tax test = new Tax();

        // Use only one scanner
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter salary: ");
        test.setSalary(sc.nextInt());

        System.out.print("Enter rate: ");
        test.setRate(sc.nextDouble());

        System.out.println("Post-tax salary: " + 
                test.posttaxsal());

        sc.close();
    }
}

class Tax {
    private int salary;
    private double rate;
    private double posttaxsal;

    public int getSalary() {
        return salary;
    }

    public double getRate() {
        return rate;
    }

    public void setSalary(int newSalary) {
        salary = newSalary;
    }

    public void setRate(double newRate) {
        rate = newRate;
    }

    public double posttaxsal() {
        posttaxsal = salary - (salary * rate);
        return posttaxsal;
    } 
}
Enter salary: 1000
Enter rate: 0.02
Post-tax salary: 980.0

正如我在前面的评论中提到的,您的函数需要int和double,而不是Scanner对象。
使用和

工作示例:

import java.util.Scanner;

public class Taxusinginput {

    public static void main(String[] args) {

        Tax test = new Tax();

        // Use only one scanner
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter salary: ");
        test.setSalary(sc.nextInt());

        System.out.print("Enter rate: ");
        test.setRate(sc.nextDouble());

        System.out.println("Post-tax salary: " + 
                test.posttaxsal());

        sc.close();
    }
}

class Tax {
    private int salary;
    private double rate;
    private double posttaxsal;

    public int getSalary() {
        return salary;
    }

    public double getRate() {
        return rate;
    }

    public void setSalary(int newSalary) {
        salary = newSalary;
    }

    public void setRate(double newRate) {
        rate = newRate;
    }

    public double posttaxsal() {
        posttaxsal = salary - (salary * rate);
        return posttaxsal;
    } 
}
Enter salary: 1000
Enter rate: 0.02
Post-tax salary: 980.0
输入/输出:

import java.util.Scanner;

public class Taxusinginput {

    public static void main(String[] args) {

        Tax test = new Tax();

        // Use only one scanner
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter salary: ");
        test.setSalary(sc.nextInt());

        System.out.print("Enter rate: ");
        test.setRate(sc.nextDouble());

        System.out.println("Post-tax salary: " + 
                test.posttaxsal());

        sc.close();
    }
}

class Tax {
    private int salary;
    private double rate;
    private double posttaxsal;

    public int getSalary() {
        return salary;
    }

    public double getRate() {
        return rate;
    }

    public void setSalary(int newSalary) {
        salary = newSalary;
    }

    public void setRate(double newRate) {
        rate = newRate;
    }

    public double posttaxsal() {
        posttaxsal = salary - (salary * rate);
        return posttaxsal;
    } 
}
Enter salary: 1000
Enter rate: 0.02
Post-tax salary: 980.0

函数所需的是int和double,而不是Scanner对象。使用
Scanner.nextInt()
Scanner.nextDouble()
。观察:如果我是你,我会使用Double和Integer而不是基元类型。声明默认构造函数也是一种很好的做法。另请参见immutable objects Approach您的函数需要的是int和double,而不是Scanner对象。使用
Scanner.nextInt()
Scanner.nextDouble()
。观察:如果我是你,我会使用Double和Integer而不是基元类型。声明默认构造函数也是一种很好的做法。另请参见不可变对象方法