gpt4 book ai didi

Java - 访问在不同的 'if/else if' 语句中创建的对象?

转载 作者:行者123 更新时间:2023-11-30 06:08:30 24 4
gpt4 key购买 nike

我目前正在开发一个项目(一个非常简单的临时书店),其中有两个类(一个用于管理用户帐户,一个用作驱动程序类),其中通过驱动程序类的main方法。根据项目规范,此菜单由 while 循环表示,用户在其中键入与多个菜单选项之一相对应的单个字符。在这个 while 循环中是一系列 if/else if 语句,其中每个语句都包含一个菜单选项的代码。这些菜单选项如下:

Main Menu:

N - Create account
L - Load money into your account balance
O - Order a book
S - Print an account summary
X - Quit

我认为 while 循环的目的是在用户浏览各个子菜单后继续循环回到主菜单,仅当用户输入为“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 语句中创建了构造函数,但不知道如何在其他 if/中实现它else if block ,所以我想知道是否有办法:

  1. 获取“将资金存入帐户”子菜单的if语句,以识别“用户”构造函数>“创建帐户”子菜单,以便我在此处包含的代码可以编译,或者:
  2. 在主方法的开头初始化“user”构造函数,然后将其实参参数更改/更新为扫描器的输入值。

我对上面列表中第二个的思考过程是,在 while 循环之前声明/初始化构造函数将允许每个 if/else if block 才能看到它,而现在似乎只有 '创建帐户' block 可以看到它(我猜这是因为构造函数是在这里创建的,并且是本地的)特定的 if 语句)。

如果我使用的任何术语错误或不准确,或者我的任何代码令人困惑/不切实际,我提前表示歉意。我只是一个初学者,所以如果你们能指出我所犯的任何错误,作为我的学习经验,我将不胜感激。

谢谢!

最佳答案

您需要在 while 循环和 if-else 之前声明变量

例如

UserAccount user = null;

while (...) {
if (...) {
user = new UserAccount(in_userName,in_initBal);
}
else {
user.addToBalance(in_amountToAdd);
}
}

关于Java - 访问在不同的 'if/else if' 语句中创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50753257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com