gpt4 book ai didi

java - 在带有可重新加载菜单的方法中使用扫描仪

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:44 25 4
gpt4 key购买 nike

我无法让我的可重载方法“菜单”工作,看起来它与扫描仪有关。

我确定这是一个简单的解决方案,但我就是找不到

 public class menuControl
{

public static void main(String[] args)
{
switch (menu())
{
case 1: System.out.println(1); menu();break;
case 2: System.out.println(2); menu();break;
case 3: System.out.println(3); menu();break;
case 4: System.out.println(4); menu();break;
case 0: System.out.println(0); menu();break;
}
}
public static int menu()
{
Scanner in = new Scanner(System.in);
System.out.println("Choice 1");
System.out.println("Choice 2");
System.out.println("Choice 3");
System.out.println("Choice 4");
System.out.print("Choose: ");
int choice = in.nextInt();
System.out.println();
in.close();
if (choice > 0 && choice < 5)
{
return choice;
}
else
{
System.out.println("Wrong choice!");
return 0;
}
}
}

我收到此错误消息:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Cashmachine.menu(Cashmachine.java:47) //The line"int choice = in.nextInt();"
at Cashmachine.main(Cashmachine.java:23) //The line "case 1: System.out.println(1); menu();break;"

最佳答案

删除 in.close()。你的 Scanner 包裹了全局 System.in,一旦你 close() 它你将无法使用 nextInt()

您可以将 Scanner 提取到一个字段(或参数)中,例如

public static int menu(Scanner in) {
// Scanner in = new Scanner(System.in);
// ...
// in.close();
// ...

我想你想要在 main() 中有一个循环,比如

Scanner in = new Scanner(System.in);
for (;;) {
switch (menu(in)) {
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
case 4:
System.out.println(4);
break;
case 0:
System.out.println(0);
break;
}
}

关于java - 在带有可重新加载菜单的方法中使用扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30157807/

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