將靜態方法添加到對象的Arraylist對象。在Try-Catch中無法完全執行的靜態方法
public static void addObject() {
int id;
String name;
try{
System.out.print("Id: ");
id = Integer.parseInt(sc.next());
System.out.print("Name: "); //when the program gets here, he just skips back to my main class...
name = sc.nextLine();
Object o = new Object(id, name);
l.addObject(o); //adds the object to this list (l) of objects
}
catch(NumberFormatException nfe){
System.out.println("Not a valid id!");
addObject();
}
}
我的主要方法是在do-while-loop中包含一個開關,它添加,刪除和編輯對象。
public static void main(String[] args){
int choice;
do{
try{
choice = Integer.parseInt(sc.next());
switch (choice){
case 0: break; //ends the program
case 1: addObject(); break; //starting static method to add an object with a name and an id
//here are some more cases with similar static methods (left them out for simplicity)
default: System.out.println("Not a valid choice!");break;
}
}
catch(NumberFormatException nfe){
System.out.println("Not a valid choice!");
choice = -1; //to keep the loop running, and prevent another exception
}
}while (choice != 0);
System.out.println("Good bye!");
}
我Object類
public class Object{
private int id;
private String name;
public Object(int id, String name) {
this.id = id;
this.name = name;
}
}
我的鏈表類類
import java.util.*;
public class ObjectList {
private List<Object> objects;
public ObjectList() {
objects = new ArrayList<Object>();
}
public void addObject(Object o){
objects.add(d);
}
}
當我嘗試運行靜態方法來添加一個對象,它記錄對象的ID就好了,但是當我輸入對象id時,它會回到我的主要方法,從頭開始循環。 當我在交換機中輸入一個字符串(重新啓動循環)時,它反應得很好。 但我似乎無法正確添加對象。
這也是一個學校任務,他們給了我們所有的代碼(try-catch方法除外),並要求我們爲靜態方法和主要方法編寫一個try-catch。 我大概可以找到一個解決方法的主要方法與if-clause,但我想知道如果這是可能的try-catch方法。
ID和名稱在同一行上嗎? –
'new Object(id,name);'??? Object如何獲得這個構造函數?這是否編譯? –
@HovercraftFullOfEels我的猜測是他很可能創建了自己的Object類。 –