我可能错过了一些非常简单的东西,但我是新手,而且更容易寻求帮助。这是家庭作业所以你可以提供线索,但是请理解我对java很恐怖。
以下是地址簿的一些代码。我希望用户输入1以查看条目2以在书中放入另一个条目或3以退出。 我让程序工作,但它没有循环询问用户下一步该做什么。然后我编写了一个switch语句,当用户选择1时,程序没有运行与案例1相关的代码:它与案例2相同。程序确实验证了我的条目(我在一个单独的类中写了一个验证器)< / p>
编码时我是否遗漏了什么?
我再次成为新人,所以不要打败我。
import java.util.Scanner;
public class AddressBookEntryApp
{
public static void main(String[] args)
{
//create new scanner
Scanner ip = new Scanner(System.in);
//welcome user to the address book application
System.out.println("Welcome to the Address Book Application");
System.out.println();
int choice = 0;
boolean quit = false;
do
{
//have the user enter a menu number
System.out.println("1 - List entires");
System.out.println("2 - Add entry");
System.out.println("3 - Exit");
System.out.println();
int menuNumber = Validator.getInt(ip, "Enter menu number: ", 1, 3);
System.out.println();
switch (choice)
{
case 1:
AddressBookIO GetEntryObject = new AddressBookIO();
GetEntryObject.getEntriesString();
System.out.println(AddressBookIO.getEntriesString());
break;
case 2:
String name = Validator.getEntry(ip, "Enter name: ");
String email = Validator.getEntry(ip, "Enter email address");
String phone = Validator.getEntry(ip, "Enter phone number: ");
AddressBookEntry newEntry = new AddressBookEntry(name, email, phone);
AddressBookIO.saveEntry(newEntry);
break;
}
}while (!quit);
}
}
答案 0 :(得分:3)
choice
设置为0
。您的意思是打开menuNumber
吗?
答案 1 :(得分:0)
您将选项分配为0(int choice = 0;
)并且永远不会更改它,因此在交换机中它既不匹配也不匹配。
应该是
switch (menuNumber)
答案 2 :(得分:0)
是的,您已将验证者的输出分配给menuNumber
,但您正在switch
上执行choice
。
答案 3 :(得分:0)
您不能更改变量choice
的值。因此它仍然是0&#39; 0正如你在开始时初始化的那样。所以你的代码永远不会进入case语句。这就是问题所在。请尝试以下方法:
choice = Validator.getInt(ip, "Enter menu number: ", 1, 3);
答案 4 :(得分:0)
不应该这一行
int menuNumber = Validator.getInt(ip, "Enter menu number: ", 1, 3);
转换为以下内容:
choice = Validator.getInt(ip, "Enter menu number: ", 1, 3);
答案 5 :(得分:0)
好吧,如前所述,“选择”变量不是用户的输入(我猜是“menuNumber”)。这是第一个问题。
现在问题是:你为什么犯这个错误?因为你的代码太复杂了。如果您阅读Martin Fowler的“清洁代码”或其他人的建议,您可以编写更好的代码。两个简单的提示:
最重要的是,学习使用调试器,用它,你很快就会发现错误。