继续收到“缺少退货声明”错误

时间:2016-11-28 15:32:47

标签: java methods return

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

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

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:错误:缺少return语句         }         ^ 1错误

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

2 个答案:

答案 0 :(得分:3)

将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,但永远不会返回。

还没有必要实例化newmark变量。这将是一个更清洁的方法:

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

答案 1 :(得分:2)

试试这个:

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

   return mark;
} else { 

    return (mark -5);
}