我目前正在开发一个项目(一个非常简单的临时书店),我有两个类(一个用于管理用户帐户,另一个用作驱动程序类),其中一个菜单呈现给用户通过驱动程序类的主要方法。根据项目规范,此菜单由 while 循环表示,其中用户键入与多个菜单选项之一对应的单个字符。在 while 循环中有一系列 if / else if else 语句,其中每个语句都包含其中一个菜单选项的代码。这些菜单选项如下:
Main Menu:
N - Create account
L - Load money into your account balance
O - Order a book
S - Print an account summary
X - Quit
我认为, while 循环的目的是在用户完成各种子菜单后继续循环回主菜单,仅在用户输入为&#34时结束; 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 阻止,所以我想知道是否有办法让我:
我在上面列表中的第二个思维过程是在 while循环之前声明/初始化构造函数将允许每个 if / else if else 阻止看到它,而似乎只有'创建帐户' 块现在可以看到它(我猜测这是因为构造函数已创建这里并且只是这个特定的 if 语句的本地。
如果我使用的任何术语错误或不准确,并且我的任何代码混淆/不切实际,我会提前道歉。我只是一个初学者,所以如果你们能指出我为我做的学习经历所犯的任何错误,我会很感激。
谢谢!
答案 0 :(得分:1)
您需要在let data = { foo: "bar" }
request.post({
uri: 'www.domain.com/upload',
body: data,
json:true
}, function (err: any, res: any, body: any) {
//handle callback
});
循环和while
e.g。
if-else
答案 1 :(得分:0)
您可以在UserAccount user
循环之前声明While
。
UserAccount user = null;
// while not "Exit"
while (menuInput != 'X') {
if (menuInput == 'N') {
user = new UserAccount(in_userName,in_initBal);
}
else if(menuInput == 'L') {
// check if UserAccount is created
if (user != null) {
user.addToBalance(in_amountToAdd);
}
}
.....
}
有了这个,你可以消除accountCheck
布尔变量,因为可以进行类似的检查以检查user
是否为空。