2010-02-04 4 views
0

У меня есть следующий фрагмент кода: По существу, количество методов должно оставаться таким же, как в коде, и мне нужно извлечь строку из элемента связанного списка объектов типа emp_struct .. Как мне это сделать?Объекты связанного списка объектов Java

import java.util.*; 
import java.io.*; 

class a1 { 

    static LinkedList l1; 
    private emp_struct input() throws IOException 
    { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     emp_struct obj = new emp_struct(); 
     obj.emp_id = br.readLine(); 
     obj.name = br.readLine(); 
     obj.salary = Double.parseDouble(br.readLine()); 
     obj.dept = br.readLine(); 
     try{ 
      search(obj); 
     }catch(Exception e){ 
      System.out.println(e); 
      obj = input(); 
     } 
     return obj; 

    } 

    boolean search(emp_struct obj) 
    { 
     int lastIndex = l1.lastIndexOf(l1); 
     int begIndex = 0; 
     for(begIndex =0;begIndex<lastIndex;begIndex++) 
     { 
      Object chkCase = l1.get(begIndex); 
      String chk = chkCase.getEmpID(); 
      if(chk.equals(obj.emp_id)); 
       throw new DuplicateEntryException("Duplicate entry found"); 

     }   
     return true; 
    } 
    public static void main(String args[]) throws IOException 
    { 
     l1 = new LinkedList(); 
    } 
} 

class DuplicateEntryException extends Exception { 
    String detail; 
    DuplicateEntryException(String a) 
    { 
     detail = a; 
    } 

    public String toString() 
    { 
     return "User Defined Exception : "+detail; 
    } 
} 

class emp_struct { 
    public String emp_id; 
    public String name; 
    public double salary; 
    public String dept; 

    public String getEmpID() 
    { 
     return emp_id; 
    } 

    public String toString() 
    { 
     return emp_id+"\t"+name+"\t"+salary+"\t"+dept; 
    } 
} 
+0

Является ли это домашнее задание или реальный код? – Jon

+0

Надеюсь, это домашнее задание .. выглядит немного беспорядочно – Juri

+4

класс emp_struct, серьезно? – GreenieMeanie

ответ

0

В вашем методе поиска, если вы находите значение, вы выбрасываете исключение. Если вы не нашли значение, вы возвращаете true. Это не похоже на лучший подход.

Если вы находите значение, не должны ли вы возвращать true, то, если он проходит через массив, не найдя его, вы не должны вернуть false?

+0

согласился, но домашняя работа говорит, что вам нужно использовать исключение исключения для пользователя, поэтому я был вынужден сделать это таким образом, но мне все же нужно извлечь строку из объекта по указанному индексу связанного списка, который не является часть моей домашней работы – manugupt1

+0

Похоже, вы хотите изменить возвращаемое значение вашего метода, чтобы вернуть строку – bkritzer

0

Эта линия

Object chkCase = l1.get(begIndex); 

должен быть

emp_struct chkCase = (emp_struct)l1.get(begIndex); 

между прочим ...