【问题标题】:Keep getting "missing return statement" error不断收到“缺少退货声明”错误
【发布时间】:2016-11-28 15:32:46
【问题描述】:

我对任何类型的编程都很陌生,并且正在学习 java。我有一项任务,但不断收到错误并且不确定如何解决。将不胜感激任何帮助,因为这项任务比我尝试的任何任务都复杂得多。 我遇到的主要问题是使用多种方法并使用返回。

这是我到目前为止的代码,如果它对任何人都有意义...任何帮助表示赞赏。

import java.util.Scanner;

public class LPU {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        boolean gradedep;

        do {
            System.out.println("Please input your mark: ");
            int mark = in.nextInt();        

            System.out.println("Please input number of days to display: ");
            int days = in.nextInt();

        if (mark >= 0 && mark <= 100 && days >= 0 && days <= 20) {
                gradedep = true;

        } else {
               System.out.println("");
               System.out.println("");
               System.out.println("Please re-enter as you have entered an invalid input.    ");
               System.out.println("");
               System.out.println("");
               gradedep = false;
        }
        } while (!gradedep);
        }

    public static int mingrade(int mark, int days) {
        int newmark;

        if (mark < 40 && mark >=0) {
            newmark = mark;

        } else { 
            newmark = mark - 5;

        return newmark;
        }
    }
}

LPU.java:40:错误:缺少返回语句 } ^ 1 个错误

我知道这个错误与代码中的一些废话有关,但不确定如何纠正它。

【问题讨论】:

  • return 移到else 大括号之外。
  • 您似乎希望return newmark 位于else 分支的外部
  • 对未来的提示,stackoverflow.com/help/how-to-ask
  • 只是一个小提示:让您的 IDE 为您重新格式化代码。它将修复缩进,如果您的退货声明放错了位置,您会清楚地看到。

标签: java methods return


【解决方案1】:

将 return 语句移到 else 子句之外,如下所示:

    public static int mingrade(int mark, int days) {
        int newmark;

        if (mark < 40 && mark >=0) {
            newmark = mark;
        } else { 
            newmark = mark - 5;
        }

        return newmark;
    }

您在帖子中的方式,如果标记小于 40 且大于或等于 0,则设置新标记,但永远不会返回。

也不需要实例化newmark 变量。这将是一种更清洁的方法:

    public static int mingrade(int mark, int days) {
        if (mark < 40 && mark >=0) {
            return mark;
        } else { 
            return mark - 5;
        }
    }

【讨论】:

    【解决方案2】:

    试试这个:

    // delete newmark
    if (mark < 40 && mark >=0) {
    
       return mark;
    } else { 
    
        return (mark -5);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2013-07-11
      • 1970-01-01
      • 2011-03-30
      • 2021-04-08
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      相关资源
      最近更新 更多