Java printf()方法中出现错误

Java printf()方法中出现错误,java,printf,Java,Printf,我需要帮助来修复我的代码。我不知道问题出在哪里,但在printf中,当我运行此代码时,编译器似乎给了我错误。为什么? Employee emp1 = new Employee(); emp1.setFname("Kim"); emp1.setLname("Yee"); emp1.setID(101); emp1.setSalary(40000); Employee emp2 = new Employee(); emp2.setFname("Lana"); emp2.setLname("Yu

我需要帮助来修复我的代码。我不知道问题出在哪里,但在
printf
中,当我运行此代码时,编译器似乎给了我错误。为什么?

Employee  emp1 = new Employee();
emp1.setFname("Kim");
emp1.setLname("Yee");
emp1.setID(101);
emp1.setSalary(40000);

Employee  emp2 = new Employee();
emp2.setFname("Lana");
emp2.setLname("Yum");
emp2.setID(102);
emp2.setSalary(55.000);

Employee  emp3 = new Employee();
emp3.setFname("Alex");
emp3.setLname("Jhone");
emp3.setID(103);
emp3.setSalary(55.500);

Employee  emp4 = new Employee();
emp4.setFname("joe");
emp4.setLname("mac");
emp4.setID(104);
emp4.setSalary(74.000);

System.out.println("Employee Name \t Employee ID \t Employee salary");  

System.out.printf("%s %s\t%d\t$%f\n", emp1.getFname() + "" + emp1.getLname(), emp1.getID(), emp1.getSalary());
System.out.printf("%s %s\t%d\t$%f\n", emp2.getFname() + "" + emp2.getLname(), emp2.getID(), emp2.getSalary());
System.out.printf("%s %s\t%d\t$%f\n", emp3.getFname() + "" + emp3.getLname(), emp3.getID(), emp3.getSalary());
System.out.printf("%s %s\t%d\t$%f\n", emp4.getFname() + "" + emp4.getLname(), emp4.getID(), emp4.getSalary());
这就是罪魁祸首:

emp1.getFname()+""+emp1.getLname()
正上方的表达式是一个字符串。使用:

System.out.printf("%s\t%d\t$%f\n", emp1.getFname()+""+emp1.getLname(), emp1.getID(),emp1.getSalary());


因此,在格式字符串中有匹配数量的参数和格式说明符。

我认为
+“”+
应该只是一个
@Nishant shresh和@hexafrance是正确的。然而,你还没有仔细考虑这个问题。任何时候,如果你有这样重复的代码,你就会错过一个机会。为什么不在
Employee
上写一个方法来返回员工的全名呢?你肯定会找到更多的地方在真正的程序中使用它

public String getFullName() {
    return fname + " " + lname;
}
一个人应该避免单调乏味的工作。记住拉里·沃尔编程的三大优点:傲慢、急躁和懒惰。你现在应该做额外的工作,这样你以后就可以懒惰了

现在,一个人的名字和姓氏之间的联系比他的身份证和薪水更紧密。此外,即使不是员工,人们也有自己的名字。因此,您应该真正创建一个
名称
类,并在
员工
(或
个人
,或
学生
,或
客户
…)中使用它,而不是
fname
lname
。然后,当需求发生变化时,您可以对其进行更改。将middleInitial添加到保留名称组件的所有类中有多困难?标题是什么?后缀是什么?你现在可能没有必要这样做,但这是一个判断问题,需要为未来做多少准备


如果你成为一名Java程序员,你可能还想让你的类实现
Java.util.Formattable
。这是一个高级主题。

欢迎来到堆栈溢出。请在问题中添加更多详细信息(例如,您收到的错误消息);目前,它有被搁置的风险。请不要使用标签。
System.out.printf("%s %s\t%d\t$%f\n", emp1.getFname(), emp1.getLname(), emp1.getID(),emp1.getSalary());
public String getFullName() {
    return fname + " " + lname;
}