2013-10-17 38 views
-2

我需要幫助來修復我的代碼。我不知道問題在哪裏,但似乎在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("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()); 
+1

歡迎來到Stack Overflow。請在您的問題中添加更多詳細信息(例如,您收到的錯誤消息);就目前而言,它有可能被擱置。 – michaelb958

+1

請不要使用標籤。 –

回答

1

@Nishant Shreshth和@hexafraction是正確的。但是,你還沒有想過通過這個問題。任何時候你有這樣的重複代碼,你都錯過了一個機會。爲什麼不在Employee上寫一個方法來返回員工的全名?你一定會在真正的程序中找到更多的地方使用它。

public String getFullName() { 
    return fname + " " + lname; 
} 

應避免苦差事。請記住Larry Wall的節目的三大美德:傲慢,急躁和懶惰。你現在應該做額外的工作,以便以後可以懶惰。

現在,一個人的名字和姓氏與他的身份證和工資關聯度更高。而且,即使他們不是員工,他們也有姓名。所以,你應該真的創建一個Name類,並在Employee(或PersonStudentCustomer ...)中使用它,而不是fnamelname。然後,您可以在需求更改時對其進行更改。如何將middleInitial添加到所有保留名稱組件的類中?什麼標題?什麼後綴?你現在可能沒有這樣的要求,但這是一個判斷未來需要多少準備的問題。

如果您成爲Java程序員,您可能還希望讓您的課程實現java.util.Formattable。這是一個高級話題。

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

這是罪魁禍首:

emp1.getFname()+""+emp1.getLname() 

即表達的正上方是一個串。用途:

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

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

讓您擁有的參數和格式說明在格式字符串匹配的數字。

0

我覺得+""+應該只是一個,