2017-03-10 1 views
1

3 개의 속성, 우선 순위 #, 설명 및 참조 #가있는 객체/항목의 ArrayList가 있습니다. 이 프로그램은 아이템의 참조 번호를 기반으로 Arraylist의 Item을 인쇄 할 수 있도록 해줍니다. 어떤 이유로 컴파일러는 ArrayList를 반복하여 해당 항목을 찾지 못하게합니다. 내가 (방법 내부 'findbyrefer')에 붙어 부분 :Item ArrayList by 속성 검색

for(Object list : list.getMyList()){ 
       if(list.getReference.equals(num)){ 
        System.out.println(list); 
       }  

내 주요 :

public class Main { 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner myscanner = new Scanner(System.in); 
    boolean exit = false; 
    boolean error = false; 
    boolean error1 = false; 

    String input = ""; 
    int num = 0; 
    System.out.println("Welcome to Your To-Do List!\n1 = Create New Item \n2 = Exit \n3 = Display Item \n4 = Delete Item"); 

    while(exit == false){ 
    Item item = new Item(); 
    do{ 
     try { 
      System.out.println("Enter a command "); 
      input = myscanner.nextLine(); 
      num = Integer.parseInt(input); 
      if(num == 1){ 
       item.reference(); 
       System.out.println("Reference: "+ item.getReference() + "\nDescription: " + item.getDescription() + "\nPriority: " + item.getPriority()); 
       error = true; 
      } 
      /** 
      * This creates the item 
      */ 
      else if(num == 2){ 
       exit = true; 
       System.out.println("Bye"); break; 
      } 
      else if(num == 3){ 
       item.findbyrefer(); 
       /** 
       * This is the part I'm stuck at 
       */ 
      } 
      else{ 
       error = true; 
       System.out.println("invalid"); 
      } 
     } 
     catch(Exception e){ 
      System.out.println("invalid input"); 
      error = true; 
     } 
    } 
    while(error); 
    } 
} 

내 항목 클래스 :

public class Item { 
private Scanner myScanner; 
private int reference; 
private String description; 
private int priority; 
List list = new List(); 

public void setReference(int reference) { 
    this.reference = reference; 
} 
public int getReference() { 
    return reference; 
} 
public void setDescription(String description) { 
    this.description = description; 
} 
public String getDescription() { 
} 
public void setPriority(int priority) { 
    this.priority = priority; 
} 
public int getPriority() { 
    return priority; 
} 

public void reference(){ 
    boolean error = false; 
    int x = 0; 
    do{ 
     try{ 
      System.out.println("Assign this item with a reference number: "); 
      myScanner = new Scanner(System.in); 
      x=myScanner.nextInt(); 
      setReference(x); 
      error=false; 
      break; 
     } 
     catch(Exception e){ 
      error = true; 
      System.out.println("invalid"); 
     } 
    } while(error); 
    description(); 
} 

public void description(){ 
    boolean error = true; 
    while(error){ 
     try{ 
      System.out.println("Enter the description: "); 
      myScanner = new Scanner(System.in); 
      String input = myScanner.nextLine(); 
      setDescription(input); 
      error=false; 
      break; 
     } 
     catch(Exception e){ 
      error = true; 
      System.out.println("invalid"); 
      break; 
     } 
    } 
    priority(); 
} 

public void priority(){ 
    boolean error = false; 
    do{ 
     try{ 
      System.out.println("Assign this item with a priority number: "); 
      myScanner = new Scanner(System.in); 
      setPriority(myScanner.nextInt()); 
      error=false; 
     } 
     catch(Exception e){ 
      error = true; 
      System.out.println("invalid"); 
     } 
    } 
    while(error==true); 
    list.addItem(this); 
    System.out.println(list.getMyList()); 
} 
public void findbyrefer(){ 
    boolean error1 = false; 
    String input = ""; 
    int num = 0; 
    do{ 
     try{ 
      System.out.println("Enter the reference number of the item you want to show"); 
      myScanner = new Scanner(System.in); 
      input = myScanner.nextLine(); 
      num = Integer.parseInt(input); 
      for(Object list : list.getMyList()){ 
       if(list.equals(num)){ 
        System.out.println(list); 
       } 
       else{ 
        System.out.println("not working"); 
       } 
      } 
     } 
     catch(Exception e){ 
      error1 = true; 
      System.out.println("invalid"); 
     } 
    } 
    while(error1 = true); 
} 

} 마이리스트 클래스 내 실제 ArrayList 포함 :

public class List { 
public ArrayList<Object> MyList = new ArrayList<Object>(); 

public void setMyList(ArrayList<Object> myList) { 
    this.MyList = myList; 
} 
public ArrayList<Object> getMyList() { 
    return MyList; 
} 

public void addItem (Object t){ 
    getMyList().add(t); 
    } 

답변

0

목록의 getReference 메소드에 괄호를 추가하고 등호 연산자 (==)를 사용하십시오.

for(Object list : list.getMyList()){ 
     if(list.getReference() == num)){ 
      System.out.println(list); 
     } 
} 
+0

이것은 * 문제 * 중 하나입니다. –

0

Object에는 getReference 방법이 없습니다. ObjectItem을에

  1. 변경 : 우리는 필요

    for(Object list : list.getMyList()){ 
        if(list.getReference.equals(num)){ 
         System.out.println(list); 
        } 
    } 
    

    :

    ArrayList<Item> myList = new ArrayList<>(); 
    // ------^^^^^^ 
    

    지금 루프보고 : 당신의 ArrayList가 Item의를 포함하기 때문에

    , 그것은 있음을 알려

  2. (equals 개체입니다)
num을 확인
  • 전화getReference
  • 사용 ==하지 equals (() 추가) (단지 혼동을 피하기 위해) 항목에 대한 list 아닌 다른 식별자를 사용하여

    So :

    for (Item item : list.getMyList()) { 
        if (item.getReference() == num){ 
         System.out.println(item); 
        } 
    } 
    
  • +0

    이것은 시작하기위한 것입니다. 다른 후속 문제가있을 수밖에 없으므로 철저한 코드 감사가 SO에 대한 주제와 다릅니다. 하지만 더 많은 문제가 생기면 오류 메시지를주의 깊게 읽고, 연구하고, 자바 서적과 자습서 등을 확인하십시오. 정말로 * 붙어 있다면, [mcve]를 사용하여 특정 문제에 대해 새로운 질문을 게시하십시오. ] ("최소"참고) 특정 문제를 보여줍니다. –