gpt4 book ai didi

简化代码时Java switch错误

转载 作者:行者123 更新时间:2023-11-30 06:13:21 25 4
gpt4 key购买 nike

大家好,这是我的第一篇文章,所以如果我有任何错误,请原谅我。这是我的问题:

public class Main {
public static void main(String[] args) {
int onlineplayer = 0;
int maxplayer;
switch(onlineplayer) {
case 0:
maxplayer = 1;
break;
case 1:
maxplayer = 2;
break;
}
System.out.print(onlineplayer + "/" + maxplayer);
}

这行代码返回这个错误:

Main.java:13: error: variable maxplayer might not have been initialized
System.out.print(onlineplayer + "/" + maxplayer);
^

同时

public class Main {
public static void main(String[] args) {
int onlineplayer = 0;
int maxplayer;
switch(onlineplayer) {
case 0:
maxplayer = 1;
System.out.print(onlineplayer + "/" + maxplayer);
break;
case 1:
maxplayer = 2;
System.out.print(onlineplayer + "/" + maxplayer);
break;
}
}

这个有效。我刚才说学习 Java,我认为它们都是同一回事。有人可以向我解释有什么区别以及为什么第一个不起作用吗?

最佳答案

代码可能看起来相似,但区别如下:

在您的第二个示例中,print 函数在设置 maxplayer 后直接调用,因此在从变量读取时,它保证已设置。

但在您的第一个示例中,开关不能保证进入任何情况,因此当到达 print 行时,maxplayer 仍可能未初始化。

为了防止这种情况,您通常会添加一个 default case,如果没有其他 case 匹配则执行该 case。这样可以保证 maxplayer 已设置:

switch(onlineplayer) {
case 0:
maxplayer = 1;
break;
case 1:
maxplayer = 2;
break;
default:
System.out.print("Some warning");
maxplayer = 1; // some default value
}

请记住,您的 switch 中应该始终有一个 default 案例!请参阅关于为什么 default 大小写很重要的很好的解释:https://stackoverflow.com/a/5241196/1174343

关于简化代码时Java switch错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023926/

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