В настоящее время я работаю над проектом (очень простой самодельный книжный магазин), в котором у меня есть два класса (один для управления учетной записью пользователя и один функционирующий в качестве класса драйвера), в котором пользователю предлагается меню черезОсновной метод класса водителя.Это меню, согласно спецификациям проекта, представлено циклом , в то время как , в котором пользователь вводит один символ, соответствующий одному из нескольких пунктов меню.В этом цикле , в то время как цикл представляет собой последовательность , если / , в противном случае, если , с каждым из этих операторов содержит код для одного из параметров меню.Эти пункты меню следующие:
Main Menu:
N - Create account
L - Load money into your account balance
O - Order a book
S - Print an account summary
X - Quit
Цель цикла , в то время как , я полагаю, состоит в том, чтобы продолжать возвращаться к главному меню после того, как пользователь перебирает различные подпрограммы.меню, оканчивающиеся только тогда, когда пользовательский ввод имеет значение «X».
Когда пользовательский ввод имеет значение «N» и меню «Создать учетную запись» запущено, выполняется следующий код:
if(menuInput == 'N') {
// Scanner sc has already been declared at top of main method
System.out.println("Enter your desired username:");
in_userName = sc.next();
// String in_userName has already been declared at top of main method
System.out.println("Enter a starting balance:");
in_initBal = sc.nextDouble();
// double in_initBal has already been declared at top of main method
UserAccount user = new UserAccount(in_userName,in_initBal);
accountCheck = true;
/* accountCheck is a boolean that makes sure an account has been
created; it has already been declared/initialized to 'false'
prior to the while loop
*/
}
Единственная другая опция меню в классе драйверов, которую я запрограммировал до сих пор, это 'L - Загрузка денег на баланс вашего счета' .Код для этой опции меню выглядит следующим образом:
else if(menuInput == 'L') {
if(accountCheck == false) {
System.out.println("You must create an account first. Enter N
to create one.");
}
else {
System.out.println("Enter the amount to add:");
in_amountToAdd = sc.nextDouble();
// double in_amountToAdd has already been declared at top of main method
user.addToBalance(in_amountToAdd); /* Method in the User Account class
that takes a double parameter and
adds it to the existing balance.
*/
System.out.println(user.getBalance());
}
Проблема в том, что user.addToBalance (in_amountToAdd) и System.out.println (user.getBalance ()) строки не компилируются, потому что «пользователь не может быть разрешен» .Я создал конструктор в операторе if , соответствующем параметру 'Create account' , но не знаю, как реализовать его в других if / иначе, если блокируется, поэтому мне было интересно, есть ли способ для меня:
- Получить заявление if для 'Загрузить деньги на счетПодменю ' для распознавания конструктора "user" из подменю ' Create account ', так что код, который я включил здесь, будет компилироваться, или:
- Инициализируйте конструктор user ' в начале основного метода, а затем измените / обновите его параметры аргумента до входных значений из сканера позже.
Мой мыслительный процесс для номера два в приведенном выше списке заключается в том, что объявление / инициализация конструктора перед циклом while будет разрешать каждый , если / иначе, если заблокировать, чтобы увидеть его, тогда как кажется, только блок 'Создать аккаунт' можетувидеть это прямо сейчас (я предполагаю, что это потому, что конструктор был создан здесь и является локальным только для этого конкретного if оператора).
Я заранее извиняюсь, если какой-либо изТерминология, которую я использовал, неверна или неточна, и если какой-либо из моего кода сбивает с толку / нецелесообразен.Я только новичок, поэтому я был бы признателен, если бы вы, ребята, указали на любые ошибки, которые я сделал, чтобы служить для меня опытом обучения.
Спасибо!