【问题标题】:Input as a Scanner Variable using getmethods & setmethods使用 getmethods 和 setmethods 作为扫描仪变量输入
【发布时间】:2015-06-30 06:18:18
【问题描述】:

我正在尝试创建一个类Tax,它使用扫描仪变量从用户那里获取工资和税率,并使用用户的输入给出税后工资。

我得到的错误是 set-method 不能用于使用扫描仪变量。请提出解决方案。

代码如下:-

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);
    }
}

【问题讨论】:

  • 您的函数需要一个 int 和一个 double,而不是 Scanner 对象。使用Scanner.nextInt()Scanner.nextDouble()
  • 观察:如果我是你,我会使用 Double 和 Integer 而不是原始类型。声明默认构造函数也是一个好习惯。另见不可变对象方法

标签: java java.util.scanner getter-setter


【解决方案1】:

setSalary 需要一个 int 参数,而不是 Scanner。你应该给它传递一个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());
}

【讨论】:

    【解决方案2】:

    正如我之前的评论中提到的,您的函数需要一个 int 和一个 double,而不是 Scanner 对象。
    使用Scanner#nextInt()Scanner.nextDouble()

    工作示例:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 2013-11-26
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2014-06-05
      • 2016-06-12
      相关资源
      最近更新 更多