Java系列数的平均值

时间:2015-02-03 22:22:27

标签: java scope

public int CalculateResult(){
    int requiredGrade = 0;
    for (int x = 0; x < 4; x++){
        int grade = input.nextInt();
        int totalMarks = totalMarks + grade;
    }
    return totalMarks / 5;
    if (totalMarks < requiredGrade){
        System.out.println("You didn't pass.");
    } 
    else{
        System.out.println("You passed.");
    }
}

我正在尝试编写一个程序,允许用户输入一系列学生的成绩,但我不断收到行return totalMarks / 5的错误(要获得5个结果的平均值)。

我已经尝试将return语句移动到for循环中,但编译器仍然无法识别totalMarks是什么。

4 个答案:

答案 0 :(得分:3)

您需要在for循环之外声明totalMarks,以便其范围不限于此。

此外,return必须是您函数的最后一条指令:

public double CalculateResult() {
    int requiredGrade = 10; // some value
    int totalMarks = 0;
    for (int x = 0; x < 4; x++){
        int grade = input.nextInt();
        int totalMarks += grade;
    }
    double averageGrade = totalMarks / 5;
    if (averageGrade < requiredGrade){
        System.out.println("You didn't pass.");
    } 
    else{
        System.out.println("You passed.");
    }
    return averageGrade;
}

答案 1 :(得分:2)

这是因为totalMarks的范围在你定义它的for循环中。要在分区中使用它,您需要在外部定义它:

public int CalculateResult(){
    int totalMarks = 0;
    int requiredGrade = 0;
    for (int x = 0; x < 4; x++){
        int grade = input.nextInt();
        totalMarks = totalMarks + grade;
    }

    if (totalMarks < requiredGrade){
        System.out.println("You didn't pass.");
    } 
    else{
        System.out.println("You passed.");
    }
    return totalMarks / 5;
}

编辑 - 您还应该根据@kurochenko编辑将返回结束移动到最后 - 否则您的输出无法访问。

答案 2 :(得分:2)

Java具有阻止变量可见性。您必须在使用该变量的相同或父块(块由{}大括号定义)中定义变量。所以你的代码应该是这样的:

public int CalculateResult(){
    int requiredGrade = 0;
    int totalMarks = 0;
    for (int x = 0; x < 4; x++){
        int grade = input.nextInt();
        totalMarks = totalMarks + grade;
    }

    if (totalMarks < requiredGrade){
        System.out.println("You didn't pass.");
    } 
    else{
        System.out.println("You passed.");
    }

    return totalMarks / 5;
}

return语句之后应该没有代码,因为此代码无法访问,并且会生成编译错误。尝试使用一些IDE(例如Netbeans,Intellij IDEA,Eclipse),以便在键入代码时向您显示编译错误。

答案 3 :(得分:0)

如上所述,请注意变量和return语句的重点。 另请注意,在整数上使用除法运算符会产生结果,例如:

int i = 5;
int j = 10;
double d = i / j;
System.out.println(d);

这将打印0.0,因为i / j等于0.5,向下舍入为0.