オブジェクトの Arraylist にオブジェクトを追加する私の静的メソッド。
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!");
}
私のオブジェクトクラス
public class Object{
private int id;
private String name;
public Object(int id, String name) {
this.id = id;
this.name = name;
}
}
私の ObjectList クラス
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 句で見つかると思いますが、try-catch メソッドでこれが可能かどうか疑問に思っていました。