当前位置: 首页 > 知识库问答 >
问题:

如何编写toString()方法[重复]

江飞白
2023-03-14

如何编写一个toString()方法,为三名员工打印名称和computePay,小数点后两位?在我添加StringBuilder之前,该程序正在工作(将名称和周支付打印到命令行)。感谢任何帮助。

import javax.swing.JOptionPane;

public class TestPayroll {

        public static void main(String[] args) {

                Payroll employee1 = new Payroll("Tiny Tim", 100.25, 40);
                Payroll employee2 = new Payroll("Brad Pitt", 150.50, 10);
                Payroll employee3 = new Payroll("Madonna", 124.24, 20);

        StringBuilder sb = new StringBuilder();

        String toDisplay=sb.toString();        
        sb.append(String.format("\n", employee1.getName(), employee1.getComputePay()));
        sb.append(String.format("\n", employee2.getName(), employee2.getComputePay()));


        JOptionPane.showMessageDialog(null, sb.toString(), toDisplay, JOptionPane.INFORMATION_MESSAGE);
        }                       
}

public class Payroll {

    public static void main(String[] args) {
                }

                private String name;
                private double payRate;
                private double hrsWorked;
                private double computePay;

                //default constructor
                public Payroll() {
                        this.name = name;
                        this.payRate = payRate;
                        this.hrsWorked = hrsWorked;
                        this.computePay = computePay;
                }

                //Payroll constructor
                public Payroll(String name, double payRate, double hrsWorked) {
                        this.name = name;
                        this.payRate = payRate;
                        this.hrsWorked = hrsWorked;
                }

                //return name
                public String getName() {
                        return name;
                }

                //set name
                public void setName(String name) {
                        this.name = name;
                }

                //return pay rate
                public double getPayRate() {
                        return payRate;
                }

                //set pay rate
                public void setPayRate(double payRate) {
                        this.payRate = payRate;
                }

                //return hours worked for the week
                public double getHrsWorked() {
                        return hrsWorked;
                }

                //set hours worked for the week
                public void setHrsWorked(double hrsWorked) {
                        this.hrsWorked = hrsWorked;
                }

                //find week's pay
                public double getComputePay() {
                        double computePay = payRate * hrsWorked;
            return computePay;
                }      

}

共有3个答案

郑桐
2023-03-14

这会有帮助

    @Override
    public String toString(){
        Formatter fmt = new Formatter();
        fmt.format("%.2f", computePay);
        return "Name : "+name+"\n"+"ComputePay : "+fmt.toString();
    }

当然,您需要导入java。util。格式化程序。

广晔
2023-03-14

您可以使用Apache ToStringBuilder类。这是一个来自留档的示例:

 public class Person {
   String name;
   int age;
   boolean smoker;

   ...

   public String toString() {
     return new ToStringBuilder(this).
       append("name", name).
       append("age", age).
       append("smoker", smoker).
       toString();
   }
 }
奚晟
2023-03-14

格式化十进制数字,可以使用java。文本DecimalFormat,在类级别将其定义为类成员,这样它就可以为工资单的所有对象共享其行为,正如@Multithreader在注释中提到的,这将是您的toString()方法:

 private static DecimalFormat df = new DecimalFormat("#.##");
 //......
    @Override
    public String toString(){
      return "Name: "+getName()+
             "\nCompute Pay: "+df.format(getComputePay())+"\n";
    }

像这样调用方法:

System.out.println(employee1.toString());

我更喜欢使用java。util。列出大量代码:

public static void main(String[] args) {
    List <Payroll> employes = new ArrayList<>();

    employes.add( new Payroll("Tiny Tim", 100.2534, 40.87876));
    employes.add( new Payroll("Brad Pitt", 150.50, 10));
    employes.add( new Payroll("Madonna", 124.24, 20));

    for(Payroll p :employes){
    System.out.println(p.toString()+"\n");
    }
}
 类似资料:
  • 本文向大家介绍浅谈Java编程ToString()方法重写的意义,包括了浅谈Java编程ToString()方法重写的意义的使用技巧和注意事项,需要的朋友参考一下 上一篇文章我们介绍了java tostring方法重写代码示例,接下来,我们简单聊聊java编程tostring()方法重写的意义。 1、toString()就是是重写,对于一般的对象来说都会有这个方法,其实这个方法的目的,主要就是将对

  • 我创建了一个(个人、学生、员工、教职员工)类。Person必须将Student和Employee分为子类。Employee有两个子类:教员和职员。我已经完成了所有的编码,他们工作得很好,除了我的驱动程序类TestPerson程序给出了编译错误 注:一个测试程序,创建一个人、学生、员工、教职员工,并调用他们的toString方法。 驱动程序类TestPerson的错误。以下是java:- **我只是

  • 本文向大家介绍java tostring方法重写代码示例,包括了java tostring方法重写代码示例的使用技巧和注意事项,需要的朋友参考一下 当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法 默认情况下 System.out.println(对象名)或者System.out.println

  • 问题内容: 基本上,这就是我要实现的目标。 classname @ address(?)[原始],对象的名称,对象的年龄 问题,被递归调用。 我不能打电话,因为那不是我想要的。我想叫原件。 这个 由于明显的原因而无法正常工作。 我已经精疲力竭了,一旦方法被重写,可以做到这一点吗?即所谓的原始实现? (我的编辑)基本上,我需要的是:覆盖toString以显示’this’对象的两个属性,并且我也想让’

  • 我这样做对吗?我生成了toString()。

  • 听起来有点愚蠢,但我需要我的方法的帮助,这很烦人。我试着在网上查找,因为是一个出错和“找不到Kid constructor#2”的程序,尽管它在那里,我甚至会做其他事情,但它不起作用。好吧,这太多了,下面是我的代码: 好的,所以我上面的toString(我知道,我的第三个参数是关闭的,应该是字符串)是关闭的。如果我硬编码第三个值,它就会失控,说它找不到这个(上面)。那么我怎么才能得到日期并把它分开