我需要找出这段代码有什么问题以及如何对其进行改进。如果我要获得更多价值该怎么办?
else if
链会更好还是使用switch语句?
string StatusMessage(int value)
{
string message;
if (value == 1)
{
message = "A";
}
else if (value == 2)
{
message = "A";
}
else if (value == 3)
{
message = "A";
}
else if (value == 10)
{
message = "B";
}
else if (value == 20)
{
message = "C";
}
else if (value == 100)
{
message = "D";
}
return message;
}
答案 0 :(得分:1)
您可以使用注释中已经建议的switch
语句。
另一种方法是定义Map<Integer, String>
,并通过int
值将其用作邮件的注册表,如下所示:
public class SomeClass {
private Map<Integer, String> messageByValue = new HashMap<>();
{
messageByValue.put(1, "A");
messageByValue.put(2, "A");
messageByValue.put(3, "A");
messageByValue.put(10, "B");
messageByValue.put(20, "C");
messageByValue.put(100, "D");
}
public String statusMessage(int value) {
return messageByValue.getOrDefault(value, "default");
}
}
答案 1 :(得分:1)
如果您希望使用一种非常简单的“天真” switch-case
解决方案,那么我会采用以下解决方案:
public class HelloWorld
{
public static void main(String []args)
{
System.out.println("Hello World");
System.out.println(StatusMessage(100));
}
public static String StatusMessage(int value)
{
String message;
switch(value)
{
case 1:
case 2:
case 3: message = "A";
break;
case 10: message = "B";
break;
case 20: message = "C";
break;
case 100: message = "D";
break;
default: message = "";
break;
}
return message;
}
}
答案 2 :(得分:0)
除了将string
的大小写(与String
相比)之外,这真的没有关系...
当您深入了解时,switch语句和if / else块的计算方式相同。这实际上是个人喜好问题。
如果您要运行的代码非常简单,并且选项之间相似;通常,我会使用switch语句,只是因为它趋向于更加紧凑和整洁。但是正如我所说,这并不重要。
我会注意到,您的问题是“ homework-esq”,这是我们在Stack Overflow上要避免的问题。我建议您尝试两种方法,看看如果您必须再添加3个值,那么比较将如何工作-再次可能差别不大。