如何编写一个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;
}
}
这会有帮助
@Override
public String toString(){
Formatter fmt = new Formatter();
fmt.format("%.2f", computePay);
return "Name : "+name+"\n"+"ComputePay : "+fmt.toString();
}
当然,您需要导入java。util。格式化程序。
您可以使用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();
}
}
要格式化十进制数字,可以使用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(我知道,我的第三个参数是关闭的,应该是字符串)是关闭的。如果我硬编码第三个值,它就会失控,说它找不到这个(上面)。那么我怎么才能得到日期并把它分开