2012-11-26 54 views
1

我有一個任務來執行使用BlueJ,我得到一個名爲HW4CustomerList的類,我必須爲它創建一個基於文本的UI。我必須創建的類叫做CustomerTUI,它包含一個名爲addCustomer的方法,它將我的一個新的Customer對象添加到一個ArrayList中。特別是這種方法就是我所堅持的。類規範說我不能接受任何參數(即沒有參數的方法)。在之前的工作中,我們使用BlueJ'方法框'與對象進行交互並將它們添加到ArrayLists,但是我不知道這是否可以在此特定實例中使用。請在我的代碼下方找到CustomerTUI以及Customer類和HW4CustomerList類的代碼。提前謝謝了。文本用戶界面,無法獲得工作的方法

CustomerTUI類:

import java.util.Scanner; 

public class CustomerTUI 
{ 
private HW4CustomerList customerList; 
private Scanner myScanner; 

public CustomerTUI() 
{ 
    customerList = new HW4CustomerList(); 
    myScanner = new Scanner(System.in); 
} 

public void menu() 
{ 
    int command; 
    boolean running = true; 

    while(running) 
    { 
     displayMenu(); 
     command = getCommand(); 
     execute(command); 
    } 
} 

private void addCustomer() 
{ 
    customerList.addCustomer(); 
} 

private void displayMenu() 
{ 
    System.out.println("   CustomerList program   "); 
    System.out.println("========================================="); 
    System.out.println("|Add a customer to the list..........[1]|"); 
    System.out.println("|Get number of customers.............[2]|"); 
    System.out.println("|Remove a customer from the list.....[3]|"); 
    System.out.println("|Show all customer details...........[4]|"); 
    System.out.println("|Show a specific customers details...[5]|"); 
    System.out.println("|Quit................................[6]|"); 
    System.out.println("========================================="); 
} 

private void execute(int command) 
{ 
    if(command == 1) 
    { 
     addCustomer(); 
    } 

    else if(command == 2) 
    { 
     getNumberOfCustomers(); 
    } 

    else if(command == 3) 
    { 
     removeCustomer(); 
    } 

    else if(command == 4) 
    { 
     showAllCustomers(); 
    } 

    else if(command == 5) 
    { 
     showCustomer(); 
    } 

    else if(command == 6) 
    { 
     quitCommand(); 
    } 

    else 
    { 
     unknownCommand(command); 
    } 
} 

private int getCommand() 
{ 
    System.out.println("Enter the command of the function you wish to use: "); 
    int command = myScanner.nextInt(); 
    return command; 
} 

private void getNumberOfCustomers() 
{ 
    if(customerList.getNumberOfCustomers() == 1) 
    { 
     System.out.println("We have " + customerList.getNumberOfCustomers() + " customer."); 
    } 
    else 
    { 
     System.out.println("We have " + customerList.getNumberOfCustomers() + " customers."); 
    } 
} 

private void quitCommand() 
{ 
    System.out.println("The program is now closing down..."); 
    System.exit(0); 
} 

private void removeCustomer() 
{ 
    String accNo; 

    System.out.println("Enter the account number of the customer you wish to remove: "); 
    accNo = myScanner.next(); 
    if (customerList.removeCustomer(accNo) == true) 
    { 
     System.out.println("Customer with account number " + accNo + " was successfully removed."); 
    } 
    else 
    { 
     System.out.println("Customer with account number " + accNo + " was NOT successfully removed."); 
     System.out.println("Please try again."); 
    } 
} 

private void showAllCustomers() 
{ 
    customerList.getAllCustomers(); 
} 

private void showCustomer() 
{ 
    String accNo; 

    System.out.println("Enter the account number of the customer you wish to view: "); 
    accNo = myScanner.next(); 
    if(customerList.getCustomer(accNo) == false) 
    { 
     System.out.println("Could not find customer with account number " + accNo + "."); 
    } 
    else 
    { 
     return; 
    } 
} 

private void unknownCommand(int command) 
{ 
    System.out.println("Command number " + command + " is not valid. Please try again."); 
} 
} 

HW4CustomerList類:

import java.util.*; 

public class HW4CustomerList 
{ 
private ArrayList<Customer> customers;  

public HW4CustomerList() 
{ 
    customers = new ArrayList<Customer>(); 
} 

public void addCustomer(Customer customer) 
{ 
    customers.add(customer); 
} 

public int getNumberOfCustomers() 
{ 
    return customers.size(); 
} 

public boolean getCustomer(String accountNumber) 
{ 
    for(Customer customer : customers) 
    { 
     if(accountNumber.equals(customer.getAccountNumber())) 
     { 
      customer.printCustomerDetails(); 
      return true; 
     } 
    } 
    return false; 
} 


public void getAllCustomers() 
{ 
    for(Customer customer : customers) 
    { 
     customer.printCustomerDetails(); 
     System.out.println("\n"); 
    } 
} 


public boolean removeCustomer(String accountNumber) 
{ 
    int index = 0; 
    for (Customer customer: customers) 
    { 
      if (accountNumber.equals(customer.getAccountNumber())) 
     { 
      customers.remove(index); 
      return true; 
     } 
     index++; 
    } 
    return false; 
} 
} 

回答

0

我認爲,所有你需要做的是建立在你的addCustomer()方法創建新的客戶對象。這可能需要獲得更多的細節:

public void addCustomer() 
{ 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter customer name: "); 
    String name = scanner.nextLine(); 
    //any additional details 
    Customer customer = new Customer(name, otherParams); 
    customers.add(customer); 
} 

希望幫助!

+0

我試過這個,一個參數是一個客戶的街道名稱,另一個是他們的城鎮名稱,並且當我輸入一個帶有空格的字符串(即「北街」)時,使用掃描儀似乎弄髒了。非常感謝您的幫助! – user1853793

+0

您是否使用nextLine()作爲街道名稱?如果是這樣,它有什麼問題? – awolfe91

+0

當我輸入街道名稱(例如'North Street'(不帶引號))時,它會將'North'字放入我的streetName變量中,並將單詞'Street'放入我的townName變量中,這會混淆整個過程(「輸入客戶的名字:」);輸入 – user1853793