2013-07-19 1 views
0

저는 예금, 인출, 계좌 개설, 잔액 조회가 가능한 은행을 만들고 있습니다.ArrayList 개체 찾기 - 검색이 작동하지 않습니까?

내 createButton 방법은 잘 작동 - 여기

public void createNewAccountButtonPanel(){ 
    //create button 
    createButton = new JButton("Create New Account"); 
    //Add Listener modeled from InputFrame.Java from GroupProject 
    class AddCreateNewListener implements ActionListener{ 
     @Override 
     public void actionPerformed(ActionEvent CreateNew){ 
      //account number has to be 4 digits. Balance has to be 100 or more 
      if(accountField.getText().trim().length() != 4 || balanceField.getText().trim().length() < 3){ 
       //not correct input, tell the user to enter the correct input 
       System.out.println("Failed to create a Bank Account!"); 
       textArea.append("Please enter a Account number and a Balance!" + "\n"); 
      } 
      else 
      {//read the input 
       System.out.println("Creating a Bank Account!"); 
       Integer accountNumber = Integer.parseInt(accountField.getText()); 
       Double amount = Double.parseDouble(balanceField.getText()); 
       getBank().createNew(accountNumber, amount); 
       textArea.append("You created " + getBank().accounts.get(getBank().accounts.size()-1) + " \n"); 
      } 
      } 
    } 
    createNew = new AddCreateNewListener(); 
    createButton.addActionListener(createNew); 
} 

내 검색 - 그것은 항상 내가 계정을 추가 한 알고있는 경우에도, null를 돌려줍니다 ...

public BankAccount search(Integer accountNumber){ 
    BankAccount found = null; 
    for(BankAccount a : accounts){ 
     if(a.getAccountNumber() == accountNumber) { 
      System.out.println("Found the account!"); 
      found = a;  
     } 
     else{ 
      System.out.println("The Account Number you entered was not found."); 
      found = null; 
     } 
    }  
    return found; 
} 

내가 무엇을 놓치고 ? 이는 또한 입금 및 인출 버튼이 작동하게합니다. 내 모든 디스플레이 계정은 정상적으로 작동합니다.

편집 : 검색 기능이 작동하는 것 같습니다. break을 추가했습니다. 이제 문제는 GUI의 텍스트 영역에 표시 할 균형을 받고있다 - 계정을 발견

public BankAccount search(Integer accountNumber){ 
    BankAccount found = null; 
    for(BankAccount a : accounts){ 
     if(a.getAccountNumber().equals(accountNumber)) { 
      System.out.println("Found the account!"); 
      found = a;  
      System.out.println("a: " + a); 
      break; 
     } 
     else{ 
      System.out.println("The Account Number you entered was not found."); 
      found = null; 
     } 
    }  
    return found; 
} 
+0

'a.getAccountNumber()'의 정확한 반환 유형은 무엇입니까? '정수 '? 'int'? – rgettman

+0

getAccountNumber()는 int를 반환합니다. – user2600585

답변

0

, 당신의 for 루프가는 유지 - 항상 0.0

public void displayBalancePanel(){ 
    //create the button 
    displayBalanceButton = new JButton("Display The Balance"); 
    //Add listener modeled from InputFrame.java from GroupProject 
    class AddDisplayBalanceListener implements ActionListener{ 
     @Override 
     public void actionPerformed(ActionEvent DisplayBalance){ 
      //read the input 
      Integer accountNumber = Integer.parseInt(accountField.getText()); 
      System.out.println("accountNumber to Display Balance for: " + accountNumber); 
      getBank().displayBalance(accountNumber, amount); 
      textArea.append("The Balance for Account: " + accountNumber + " is " + getAmount() + "\n"); 
     } 
    } 
    displayBalance = new AddDisplayBalanceListener(); 
    displayBalanceButton.addActionListener(displayBalance); 
} 

새로운 검색 표시 원하는대로 지난 Account. 그런 다음 elsefoundnull으로 다시 설정합니다.

계좌를 찾았 으면 if 블록의 오른쪽에서 계좌를 반환하십시오. else 블록이 필요하지 않습니다.

실제로 변수 found이 필요하지 않습니다. aif 블록에 직접 반환하면 찾을 수없는 경우 메서드의 마지막 문을 return null;으로 변경할 수 있습니다.

+0

감사합니다. 계정을 찾으면 '휴식'하도록 수정했습니다. 우리가 다른 부분을 작동 시키면 이것을 정리할 것입니다. – user2600585

1

는 정수 (int가 아닌) 이래로 :

a.getAccountNumber().intValue() == accountNumber.intValue(); 

당신이 원하는 것을 아마도. 또한, 그들이 루프를 벗어나는 것에 대해 말한 것.

+0

OP는'getAccountNumber()'가'int'를 리턴한다는 것을 명확히했습니다. 그래서'intValue'를 호출하는 것은 불필요합니다; 'accountNumber'는 unboxed되고 비교는 예상대로 작동합니다. – rgettman

관련 문제