gpt4 book ai didi

java - 方法流程+开关

转载 作者:行者123 更新时间:2023-12-02 03:46:47 28 4
gpt4 key购买 nike

static double rSetzen(){
double r;
System.out.println("Sind sie männlich oder weiblich?");
String gender = new java.util.Scanner(System.in).nextLine();
switch(gender){
case "männlich": r = 0.7; break;
case "weiblich": r = 0.6;break;
default: System.err.println("Dies war nicht gefragt"); rSetzen();break;
}
return r;
}

我的代码(上面)有问题,为什么 r 没有初始化,我可以做得更好吗?

最佳答案

r未初始化,因为

  • 声明时没有 = <some value> ,并且
  • 有一条来自 double r 的代码路径至return r (即,当 switch 采用 default: 分支时)分配 r任何值。

有几种修复它的方法 - 一种是声明 r具有初始值,如下所示:

double r = 0;

另一个是确保 default:分支分配r一些值:

default:
System.err.println("Dies war nicht gefragt");
r = rSetzen();
break;

另一种方法是在 default: 中抛出异常

default:
throw new IllegalStateException("Dies war nicht gefragt");
break;

这将阻止代码到达 return r .

I just want to know [...] what I could do better

对于本质上不递归的问题,更好的方法是使用循环而不是递归。

关于java - 方法流程+开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123363/

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