2013-07-10 3 views
0

3 개의 배열 목록에 항목을 만들고 추가하는 방법이 하나 있습니다. 그 중 2 개는 <String>이고 다른 하나는 <Integer>입니다. 문제는 내가 (3 가지) 다른 항목을 제거해야하는 항목을 제거 할 다른 방법으로 사용해야한다는 것입니다.Java에서 다른 배열 목록 유형을 반환하려면 어떻게해야합니까?

이것은 "추가"방법 :

public static void Hire() throws IOException{ 
    String name; 
    String category,st_wage,st_id; 
    int wage,id; 

    BufferedReader ob_name = new BufferedReader (new InputStreamReader (System.in)); 
    BufferedReader ob_category = new BufferedReader (new InputStreamReader (System.in)); 
    BufferedReader ob_wage = new BufferedReader (new InputStreamReader (System.in)); 
    BufferedReader ob_id = new BufferedReader (new InputStreamReader (System.in)); 
    //name on name_list[id] 
    //cat. on cat_list[id] 
    //wage on wage_list[id] 
    System.out.println("Driver Name: "); 

    name = ob_name.readLine(); 

    System.out.println("Driver License: "); 
    System.out.println("1 - Motorcycle"); 
    System.out.println("2 - Van"); 
    System.out.println("3 - Truck"); 

    category = ob_category.readLine(); 

    System.out.println("Wage: "); 

    st_wage = ob_wage.readLine(); 
    wage = Integer.parseInt(st_wage); 

    System.out.println("Driver ID: "); 

    st_id = ob_id.readLine(); 
    id = Integer.parseInt(st_id); 

    ArrayList<String> name_list = new ArrayList<String>(); 
    name_list.add(id, name); 

    ArrayList<String> cat_list = new ArrayList<String>(); 
    cat_list.add(id, category); 

    ArrayList<Integer> wage_list = new ArrayList<Integer>(); 
    wage_list.add(id, wage); 

    Manage(); 

} 

그리고 이것은 "제거"방법 :

public static void Fire (ArrayList<String> name_list, ArrayList<String> cat_list, ArrayList<String> wage_list) throws IOException{ 
    int id; 
    BufferedReader ob_id = new BufferedReader (new InputStreamReader (System.in)); 
    BufferedReader ob_op = new BufferedReader (new InputStreamReader (System.in)); 
    //name on name_list[id] 
    //cat on cat_list[id] 
    //wage on wage_list[id] 
    System.out.println("Driver ID: "); 

    String st_id = ob_id.readLine(); 
    id = Integer.parseInt(st_id); 

    String name = name_list.get(id); 

    System.out.println("Are You Sure to fire Driver "+name+"? (Y/N)"); 

    char op = (char) ob_op.read(); 

    if(op == 'Y' || op == 'y'){ 
     name_list.remove(id); 

     cat_list.remove(id); 

     wage_list.remove(id); 
    } 

    Manage(); 

} 
+2

대신 드라이버 용 클래스를 만들고 싶습니다. 이건 지저분 해. – fge

+0

코드에 BufferedReader가 5 개 추가되었으므로 하나만 있으면됩니다. – Kayaman

+4

[object denial] (http://stackoverflow.com/a/3725728/40342)의 고전적인 경우 : 병렬 목록을 사용하지 말고 'Driver'객체의 단일 목록을 사용해야합니다. 비 관련 메모에서는 여러 개의 'BufferedReader'를 만들 필요가 없으며 유해 할 수도 있습니다. 단 하나만 사용하십시오. –

답변

0

와 함께 목록에 요소를 추가 할 때 바운드 예외 밖으로 배열 인덱스를 얻을 것이다 자신의 색인. 귀하의 요구에 대한 모든 필요는 간단한 클래스

public class Driver { 
    public String id ; 
    public String name ; 
    public String category ; 
    public double wage ; 

    public Driver(String id, String name) { 
    this.id = id; 
    this.name =name; 
    } 

    // getter and setter methods 
} 

은 또한 추가 또는 드라이버를 제거 할 수 있습니다 사용자의 모든 입력을받은 후 드라이버의 새로운 인스턴스를 생성하고 Map

// Key = driverId and value = DriverEntity 
HashMap<String,Driver> map = new HashMap(); 

에 보관하다 신분증.

관련 문제