好的,我有一個家庭作業。我原本以爲一切好就可以了,我正在一個作業:「線程中的異常」main「java.lang.NullPointerException」
"Exception in thread "main" java.lang.NullPointerException at HW3.main<HW3.java:18>
這條線是:
tempMembers[i/4].setFirstName(args[i]);
現在我還是非常的編程菜鳥,一切,直到這我所做的一點是在Eclipse中。該程序將在文本編輯器中創建,然後在命令提示符下編譯並運行。我不知道,也許我只是輸入錯誤或不正確的參數。
因此,對於這個錯誤我的命令提示符下進入了
java HW3 Bill Smith 2009 Football Jane Doe 2000 Tennis David Jones 1995 Baseball
所以在我的代碼或我輸入錯誤?如果錯誤出現在我的代碼中,你能否指出我正確的方向?就像我說的,命令行參數對我來說是全新的,而我的班級沒有做任何這方面的例子,只是談論概念。
public class HW3 {
public static void main(String[] args) throws Exception {
if (args.length % 4 != 0) {
throw new Exception(
"First Name, Last Name, Year Inducted, Sport not entered correctly");
}
HallOfFame hallOfFameList = new HallOfFame();
hallOfFameList.setNumberOfMembers(args.length/4);
HallOfFameMember[] tempMembers = new HallOfFameMember[args.length/4];
for (int i = 0; i < args.length; i += 4) {
tempMembers[i/4].setFirstName(args[i]);
tempMembers[i/4].setLastName(args[i+1]);
tempMembers[i/4].setYearInducted(Integer.parseInt(args[i+2]));
tempMembers[i/4].setSport(args[i+3]);
}
hallOfFameList.setMembers(tempMembers);
HallOfFameMember[] sortedMembers = null;
hallOfFameList.sortMembers(sortedMembers);
HallOfFame.printReport(sortedMembers);
}
}
public class HallOfFameMember implements Comparable<HallOfFameMember> {
private String firstName;
private String lastName;
private String sport;
private int yearInducted;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getSport() {
return sport;
}
public void setSport(String sport) {
this.sport = sport;
}
public int getYearInducted() {
return yearInducted;
}
public void setYearInducted(int yearInducted) {
this.yearInducted = yearInducted;
}
@Override
public int compareTo(HallOfFameMember o) {
return this.getYearInducted() - o.getYearInducted();
}
}
public class HallOfFame {
private HallOfFameMember[] members;
private int numberOfMembers;
public HallOfFameMember[] getMembers() {
return members;
}
public void setMembers(HallOfFameMember[] members) {
this.members = members;
}
public int getNumberOfMembers() {
return numberOfMembers;
}
public void setNumberOfMembers(int numberOfMembers) {
this.numberOfMembers = numberOfMembers;
}
public void sortMembers(HallOfFameMember[] sortedMembers) {
boolean bool = true;
HallOfFameMember temp;
while (bool) {
bool = false;
for (int i = 0; i < sortedMembers.length - 1; i++) {
if (sortedMembers[i].compareTo(sortedMembers[i + 1]) > 0) {
temp = sortedMembers[i];
sortedMembers[i] = sortedMembers[i + 1];
sortedMembers[i + 1] = temp;
bool = true;
}
}
}
}
public static void printReport(HallOfFameMember[] print) {
System.out.println("Java Sports Hall of Fame Inductees\n\n");
System.out.printf("%-30s\t%-30s\t%-30s\n", "Name", "Year Inducted",
"Sport");
for (int i = 0; i < print.length; i++)
System.out.printf("%-30s\t%-30s\t%-30s\n", print[i].getLastName()
+ "," + print[i].getFirstName(),
print[i].getYearInducted(), print[i].getSport());
}
}
謝謝。修正了那個錯誤 – Zankorel