在我的脑海中,我正在初始化一个名为grade的变量,并使用if else语句来更改变量。 但是我收到重复的局部变量错误。我返回双倍,所以我初始化为 0.0。我在这里理解"范围"是错误的吗?
public static double finalGrade(double assignment, double midterm, double finalExam) {
double grade=0.0;
double midWorth = divide(midterm,20);
double finalWorth = divide(finalExam,45);
if(finalWorth < midWorth) {
double grade = divide((assignment + finalExam),80);
}
else {
double grade = divide((assignment + midterm + finalExam), 100);
}
return grade;
}
声明变量时,只需指定数据类型double
一次。更新值时无需。
有代码是这样的,
public static double finalGrade(double assignment, double midterm, double finalExam) {
double grade=0.0; // declaring
double midWorth = divide(midterm,20);
double finalWorth = divide(finalExam,45);
if(finalWorth < midWorth) {
grade = divide((assignment + finalExam),80); // updating value
} else {
grade = divide((assignment + midterm + finalExam), 100); // updating value
}
return grade;
}
考虑变量的作用域
在
if(finalWorth < midWorth) {
double grade = divide((assignment + finalExam),80);
}
else {
double grade = divide((assignment + midterm + finalExam), 100);
}
if-else
中grade
变量的作用域仅限于if-else
- 在大括号外不可见
所以做
if(finalWorth < midWorth) {
grade = divide((assignment + finalExam),80);
}
else {
grade = divide((assignment + midterm + finalExam), 100);
}