2012-11-26 47 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