2013-03-07 3 views
1

Мне был предоставлен следующий код моего профессора.Если код выписки номер

public static void main(String[] args) { 

    Customer customer; 
    Transaction transaction; 
    double withdrawalAmount = 0; 

    boolean finished = false; 

    while (finished == false) 
    { 
     // Menu Display and Get user input 
     int inputInt = 0; 
     while (inputInt == 0) 
     { 
      inputInt = displayMenuAndGetInput(); 

        // if the input is out of range 
        if ((inputInt < 1) || (inputInt > 8)) 
        { 
          System.out.println("\nThe input is out of range!"); 
          System.out.println(); 
          inputInt = 0; 
        } 
      } //end while 

      // switch to correspondence function 
      switch (inputInt) 

      { 
       case 1: 
        customer = createPersonalCustomer(); 
        System.out.println("\nThe Personal customer has been created: \n" + newPC.toString()); 
        customers.add(customer); 
        break; 
       case 2: 
        customer = createCommercialCustomer(); 
        System.out.println("\nThe Commercial customer has been created: \n" + newCC.toString()); 
        customers.add(customer); 
        break; 
       case 3: 
        transaction = recordTransaction(); 
        if(transaction != null) 
         System.out.println("\nThe Transaction has been created: \n" + trans.toString()); 
        else 
         System.out.println("\nThe ID could not be found."); 
        break; 
       case 4: 
        withdrawalAmount = makeWithdrawal(); 
        if(withdrawalAmount > 0) 
         System.out.println("\nAmount withdrawn from this account: " + moneyFormat.format(acct.getMakeWithdrawal()) + "\n"); 
        else 
         System.out.println("\nThe ID could not be found."); 
        break; 
       case 5: 
        displayCustomer(); 
        break; 
       case 6: 
        displayCustomerSummary(); 
        break; 
       case 7: 
        displayGrandSummary(); 
        break; 
       case 8: 
        // exit 
        finished = true; 
        break; 
       default: 
        System.out.println("Invalid Input!"); 

        break; 
      } // end switch 
    } // end while 

} 

Я должен принять следующий код

// Create a new Transaction 
public static Transaction recordTransaction(){} 

и сделать петлю, которая работает по следующему сценарию:

вводится идентификатор клиента, и если идентификатор клиента не совпадает в массиве генерируется ошибка, считываемая в случае 3, и отображается главное меню. Если идентификатор клиента действителен, пользователь вводит данные ввода ниже.

Ниже мой код

public static Transaction recordTransaction(){ 

System.out.println("Enter the customer ID to create the transaction > "); 
    long customerID = scan.nextLong(); 

    for (Customer c : customers) { 
     if (c.getCustomerID() == customerID) { 
      if (trans != null) { 

      System.out.println("\nEnter the weight of gold > "); 
       Transaction.goldWt = scan.nextDouble(); 

       System.out.println("\nEnter the weight of platinum > "); 
       Transaction.platinumWt = scan.nextDouble(); 

       System.out.println("\nEnter the weight of silver > "); 
       Transaction.silverWt = scan.nextDouble(); 
       } 
     } 
      return null; 
} 

Anywho, я запускаю это целый ряд способов и либо мой код будет принимать недопустимый и действительный идентификатор клиента, или он не будет принимать недопустимый или действительный идентификатор клиента , Я знаю, что я, вероятно, что-то не замечаю, и поэтому я отчаянно прошу помощи форума. У меня есть тенденции OCD, когда дело доходит до программирования, и это мой первый класс intro java, поэтому я не очень разбираюсь в языке. Я застрял в этом вопросе последние два дня. Пожалуйста помоги.

ответ

1

Вам необходимо создать экземпляр new Transaction() в рамках метода recordTransaction() и вернуть его при необходимости.

public static Transaction recordTransaction(){ 

    System.out.println("Enter the customer ID to create the transaction > "); long customerID = scan.nextLong(); 

    for (Customer c : customers) { 
     if (c.getCustomerID() == customerID) { 
      Transaction trans = new Transaction(); 

      System.out.println("\nEnter the weight of gold > "); 
      trans.goldWt = scan.nextDouble(); 

      System.out.println("\nEnter the weight of platinum > "); 
      trans.platinumWt = scan.nextDouble(); 

      System.out.println("\nEnter the weight of silver > "); 
      trans.silverWt = scan.nextDouble(); 

      return trans; 
     } 
    } 
    return null; 
} 
+0

это имеет смысл. Я был под впечатлением, так как я уже звонил в транс, я не должен был повторять это снова. – ComplexVolcano

+0

Непонятно, что вы подразумеваете под «принятием». «Ничего не принимает» означает, что вы получаете сообщение «Идентификатор не найден». независимо от идентификатора клиента, который вы предоставляете?
Вы должны указать код метода createPersonalCustomer(). – dotvav

+0

Да, состояние выхода: «Идентификатор не найден». для любого идентификатора, который предоставляет. Я не следую вашему второму утверждению «Вы должны предоставить код для метода createPersonalCustomer()». – ComplexVolcano

0

Некоторые замечания о коде:

if (trans != null) { 

Что такое "транс"? Думаю, он должен ссылаться на экземпляр транзакции.

Transaction.goldWt = ... 

Не должно ли это быть «trans.goldWt»? (и то же самое для plantinum и серебра, конечно). Если это действительно Transaction.goldWt, вы всегда меняете одно значение.

return null; 

Вы никогда не возвращаете ничего, поэтому вызывающий код всегда переходит к «no ID». Разве вы не "return trans"?

+0

Я просто заметлю, что если код компилируется в настоящее время, то «goldWt» является статическим, то есть для всех классов типа «Транзакция» есть только 1 переменная, и это, вероятно, не должно быть статическим. – Dukeling

+0

trans относится к – ComplexVolcano

+0

Хм, проблема была с моим геттером и сеттером для моего клиента; – ComplexVolcano

0

Проблема генерируется методом getter и setter для случайного идентификатора клиента для каждой создаваемой учетной записи.

Thank you Merci!

Смежные вопросы