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
是什么。
答案 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.