gpt4 book ai didi

java - 在 switch 语句的 case 部分使用方法

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

我正在尝试在我的评分系统中使用 switch 语句,但我没有找到在 switch case 部分包含一系列值的正确方法。然而,我在这里进行了研究,发现了 isBetween 的用法:

public static isBetween(int x, int lower, int upper)
{
return lower <=x && x<=upper;
}

我尝试以这种方式使用它来检查提交的标记是否在 1-20 的范围内:

switch (mark) {
case isBetween(0, 20):
System.out.println("Grade is E");
break;
case isBetween(21, 29):
System.out.println("Grade is D");
break;
}

我知道这是错误的,因为它不起作用。有人会帮助更正我的代码吗?在这种情况下,我必须使用 switch 语句。

最佳答案

在 switch 语句中,每个 case 都会评估 switch(param) 中的输入参数是否等于该 case。例如,如果我要编写 switch(3),只有 case 3: 会执行。

这里有几个问题。首先,您的case 中的方法返回一个boolean,但您正在对一个int 进行切换。因此,当代码检查输入参数 mark 是否等于 isBetween(0,20) 时,它正在尝试比较一个 int和一个 boolean 值。你实际上并不想这样做。您想要查看 mark 是否是值 0、1、2、3、4、5.. 20 之一。如果您要在此处使用 case 语句,则需要比较 标记到每个值的case

其次,正如 Eric 所说,您需要在 case 语句中使用静态值。这意味着您不能让函数返回 String,因为它可能会根据函数的内部结构发生变化。

此外,isBetween() 要求您输入要确定的数字是否介于其他两个数字之间。现在您的代码没有正确数量的输入。正如 Tiny 指出的那样,该方法还应该声明它正在返回一个 boolean。定义方法时始终需要返回类型。

执行此操作的最佳方法可能不使用 switch-case,并且看起来像这样:

public static boolean isBetween(int x, int lower, int upper)
{
return lower <=x && x<=upper;
}

public void printMark(int mark){
if(isBetween(mark, 0, 20))
System.out.println("Grade is E");
else if(isBetween(mark, 21, 29))
System.out.println("Grade is D");
}

因为你必须使用 switch-case,所以我会调整它,就像这样:

private static final int GRADE_E = 0;
private static final int GRADE_D = 1;

public static boolean isBetween(int x, int lower, int upper)
{
return lower <=x && x<=upper;
}

private int getMarkCode(int markParam){
if(isBetween(markParam, 0, 20))
return GRADE_E;
else if(isBetween(markParam, 21, 29))
return GRADE_D;
}

public void printMark(int mark){
switch(getMarkCode(mark)){
case GRADE_E:
System.out.println("Grade is E");
break;
case GRADE_D:
System.out.println("Grade is D");
break;
}
}

请注意,这比第一种情况更长,而且相当多余。还要注意我是如何命名我在 case 语句中使用的代码的。您看到的许多写得很好的案例陈述不会使用数字,而是会使用描述性名称。特别是当您使用没有任何内在含义的代码时,就像我在这里使用 0 表示 E 等级和 1 表示 D 等级一样,您需要一个描述性名称。但是,一般来说,您应该避免使用代码,而是使用代码试图表示的值,无论该值是字符串、整数还是某种类型的对象。

关于java - 在 switch 语句的 case 部分使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21372551/

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