java - 为什么需要这个返回语句?

标签 java if-statement return

<分区>

这是《Absolute Java》一书中的一个方法。我不明白为什么最后的 else 语句需要返回值 0。作者的评论是“需要让编译器开心”。返回值为 0 是否有原因,或者它可以是任何整数?

public int getMonth( )
{
    if (month.equals("January"))
        return 1;
    else if (month.equals("February"))
        return 2;
    else if (month.equalsIgnoreCase("March"))
        return 3;
    else if (month.equalsIgnoreCase("April"))
        return 4;
    else if (month.equalsIgnoreCase("May"))
        return 5;
    else if (month.equals("June"))
        return 6;
    else if (month.equalsIgnoreCase("July"))
        return 7;
    else if (month.equalsIgnoreCase("August"))
        return 8;
    else if (month.equalsIgnoreCase("September"))
        return 9;
    else if (month.equalsIgnoreCase("October"))
        return 10;
    else if (month.equals("November"))
        return 11;
    else if (month.equals("December"))
        return 12;
    else
    {
        System.out.println("Fatal Error");
        System.exit(0);
        return 0; //Needed to keep the compiler happy
    }
}

最佳答案

我认为这对程序员而言是糟糕的设计,但它足够简单并且可以完成我想的工作。也许这本书围绕这个例子提供了更多的背景信息?也许他们用它来表达关于语言的观点而不是真正解决问题?因为这是控制应用程序中逻辑流的糟糕方法。

运行时,应用程序将在此处结束:

System.exit(0);

但是编译器不知道。编译器看到此函数返回一个 int 并要求所有代码路径都返回一个值。即使其中一个代码路径将在运行时以另一种方式退出函数。所以最后的代码路径需要返回一个值:

return 0;

当然,它可以是任何整数。开发人员选择 0 是因为它很简单,但本质上是任意的。在运行时不会到达该行。

关于java - 为什么需要这个返回语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712698/

相关文章:

java - 为什么java代码中的String.length不计算空格?

Java EE 共享库?

java - 如何在java中使用return和字符串

Swift 函数不会让我返回 Bool,即使函数有返回值

java - 返回对象在Java中是什么意思

java - java中的Tiff文件压缩

java - JTabbedPane:在选项卡中显示任务进度

python - Django 模板 : False vs. 无

javascript - 如果或条件不起作用

javascript - 执行此操作的最快方法?三元运算符?转变?大批?