如果陈述得到改进,那又如何呢?

时间:2019-02-05 20:10:37

标签: java if-statement

我需要找出这段代码有什么问题以及如何对其进行改进。如果我要获得更多价值该怎么办?

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;
}

3 个答案:

答案 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个值,那么比较将如何工作-再次可能差别不大。