目前,我正在使用switch语句。当我有多个带有switch语句的循环时,我会遇到一个问题。
当我退出第二个switch语句(往上说)时,Java抛出Java.util.NoSuchelementException
,我不太清楚为什么
switchOne = sc.nextInt();
应该触发新的用户输入?
我希望有人能帮我弄清楚这一点。我还尝试使用扫描器
,而不使用try-with-resources
,但它也出现了同样的错误。
public static void main(String[] args) {
int switchOne = 0;
int switchTwo = 0;
boolean breakAdmin = false;
try(Scanner sc = new Scanner(System.in)) {
while(true) {
System.out.println("Select one of the options below");
System.out.println("1: Browse books");
System.out.println("2: Get a coffe");
System.out.println("3: See previously checkouts");
System.out.println("0: Exit");
System.out.print("Option: ");
switchOne = sc.nextInt();
switch(switchOne) {
case 0:
return;
case 1:
System.out.println("!!You choose to browse over books, woohoo!!");
break;
case 2:
System.out.println("!!Sit & relax");
break;
case 3:
System.out.println("!!Let me get that list for you");
break;
case 99:
System.out.println("We welcome you!");
try(Scanner sc2 = new Scanner(System.in)) {
while(!breakAdmin) {
System.out.println("0: exit");
System.out.println("1: something");
switchTwo = sc2.nextInt();
switch(switchTwo) {
case 0:
breakAdmin = true;
break;
case 1:
System.out.println("!!admin 1");
break;
default:
System.out.println("!!This is the default case");
break;
}
}
}
breakAdmin = false;
break;// case 99 ends
default:
System.out.println("!!This is the default case");
break;
} // switch block ends
} // while loop ends
} // try with resources ends
}
尝试(扫描程序sc2=新扫描程序(System.in)){
try-with-resources构造关闭在try on exit中创建的资源,因此它调用sc2.close()
,然后关闭system.in
。
在此之后,您尝试从另一个sc
中读取,后者尝试从system.in
中读取。但自从它关闭后,它就不再有任何可读的东西了。
只需删除第二个try
即可修复,无需关闭在那里创建的扫描器。
Edit:另一个潜在的问题是,输入流包含一个非数字(例如换行符),它不会被清除,因为它不能将其解释为一个数字,它将抛出声明的异常。在处理用户输入时,最好只阅读整行scanner.readline()
并自己转换输入,例如使用integer.parseint(...)
在短 我想在thymeleaf中有一个switch语句,逻辑一旦写入多个case语句。 详细地 我想在thymeleaf中实现这一点 我当前的胸腺叶代码失败并出现运行时错误 但是上面的代码错误地失败了 注意:我知道出现上述错误消息的原因。我所需要的只是知道一种方法来实现单输出的多情况切换
问题内容: 因此,我今天编写了一种方法,该方法结合了嵌套开关语句的使用,并且代码对我来说看起来很简洁明了,但是有人告诉我,嵌套开关语句通常不是最好的处理方法,因为它们可能会使更多的语句变得混乱。切换添加的语句。这是我的代码的示例: 因此,我的问题是,从本质上讲,什么是这些switch语句的合适替代方案? 问题答案: 我建议您用对过程的调用替换每个嵌套的switch语句,然后该过程将执行嵌套的swi
问题内容: 有人可以解释一下为什么我的循环从0变为7吗?我只需要获得前3种情况,但是程序将遍历所有代码。代码位于show()方法中。 问题答案: 因为没有休息。在每种情况下,您都需要break关键字。有关详细说明,请参见switch语句Java教程。 例如 否则,如果上述情况之一被评估为true,则将执行其他情况。
我有一个对我来说很奇怪的问题。我实现了,将使用执行。问题是,它只执行一次。。。 下面是有用的代码(是一个枚举): 有趣的是,如果我用一些if-else语句替换这个开关,它工作得很好,这意味着这个Runnable按照我的要求每50毫秒执行一次。。! 下面是调度设置: 为什么用if-else语句每50ms调用一次Runnable,为什么用switch只调用一次?? 编辑:因为你问,这里是MenuEve
我们的老师让我们创建一个关于给定情况的java程序,即使用if/else的每小时工资率,这就是我得出的结果,我对此感到高兴(我只是一个初学者)。接下来的指令是用switch语句替换if/else。他还没有讨论switch语句。我试图搜索它们,但我无法理解。请帮忙。非常感谢。 这就是确切的指示:1。使用if/else构造编写一个程序,该程序将根据工作小时数计算人员工资。注意ff:工资率为每小时35菲
null 代码如下所示: 和我想提高的班级: 我该怎么办?每个字段都在使用,但每个触发器都在使用。另外,这种情况有点特殊(OnFinalMethod需要参数)。基于上面的文章,我尝试重构这段代码,但没有成功。 你知道吗?:)