Java,使用scanner,异常
有人能告诉我我做错了什么吗,这部分代码应该扫描餐厅名称、菜单名称、菜单项名称及其价格,但它给了我某种例外,而且它似乎完全跳过了第一次扫描,只是跳到了第二次,理想情况下,它应该扫描1家餐厅,其中有1个菜单,包含2个菜单项及其名称和价格Java,使用scanner,异常,java,exception,Java,Exception,有人能告诉我我做错了什么吗,这部分代码应该扫描餐厅名称、菜单名称、菜单项名称及其价格,但它给了我某种例外,而且它似乎完全跳过了第一次扫描,只是跳到了第二次,理想情况下,它应该扫描1家餐厅,其中有1个菜单,包含2个菜单项及其名称和价格 String newRestaurant, newMenu; String[] newMenuItem = { "", "" }; double[] price = {0.0, 0.0}; int x = 0; System.out
String newRestaurant, newMenu;
String[] newMenuItem = { "", "" };
double[] price = {0.0, 0.0};
int x = 0;
System.out.println("---------------------------------------");
System.out.println("CREATE A RESTAURANT, MENUS, and MENU ITEMS:");
System.out.println("Please input the name of the new Restaurant:");
newRestaurant = scan.nextLine();
System.out.println("What is the name of the Menu you wish to create (type 'none', if you are done):");
newMenu = scan.nextLine();
if (newMenu == "none") System.out.println("Saving entry...");
else {
System.out.println("What is the name of the Menu item you wish to create (type 'none', if you are done):");
newMenuItem[x] = scan.nextLine();
if(newMenu != "none") {
System.out.println("What is the price?");
price[x]= scan.nextDouble();
x++;
首先,让我们解决字符串测试的问题: 不要
==
或=代码>以测试Java中的字符串。除非你真的知道自己在做什么,==
和=代码>可能会给您错误的答案。使用s.equals(s2)
或!s、 等于(s2)
您的原始代码同时使用==
和=
来比较字符串,这是一种测试不可靠的情况。修复所有这些
参考:
现在我们遇到了导致抛出inputmaschException
的问题。您已经告诉我们它来自一个简单的println
,但这实际上是不可能的。实际上,stacktrace表示异常是由nextDouble()
调用引发的,这将发生,因为(如所述)“…下一个标记与浮点正则表达式不匹配,或者超出范围”
原因是什么?可能有两件事:
- 可能是用户输入的不是正确语法中的数字。例如,“四”或“我的大脑受伤了”
一个正确编写的程序应该处理这个。。。告诉用户他/她犯了错误。(例如,使用
hasDouble()
方法测试下一个令牌是否可接受为double
)
- 可能是代码中的逻辑错误意味着您试图将其他问题(或某物)的答案作为数字读取
我不能告诉你哪一个是真正的原因,因为坦率地说,我不相信你提供的“证据”。我怀疑这是真实的代码,它肯定与stacktrace不匹配。此外,您还没有告诉我们“用户”键入了什么导致这种情况发生。。您如何声明“扫描”?另外,会发生什么异常?请确保在调用nextLine()
之前,您没有调用nextyy()。更多信息或。确切的异常是什么?异常是:线程“main”java.util.InputMismatchException中的异常位于java.util。位于java.util的Scanner.throwFor(Scanner.java:909)。位于java.util的Scanner.next(Scanner.java:1530)。restaurantsett2.main(restaurantsett2.java:78)上的Scanner.nextDouble(Scanner.java:2456)