我只是想知道是否有任何编写其他的目的,如果或者这是纯粹为了更好的代码可读性而编写的。例如,这段代码取自oracle java教程:
class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
肯定会写“else if”部分,只是如果会做同样的事情?如果有人能帮我解释一下,我会非常感激。感谢
答案 0 :(得分:2)
主要是关于表现,但也涉及你想要表达的内容!想象一下,testscore是> = 90,那么等级变量将被设置为' A'并且不会评估任何其他if语句。
将代码重写为
class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
}
if (testscore >= 80) {
grade = 'B';
}
if (testscore >= 70) {
grade = 'C';
}
if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
还会检查testscore是否> = 80并将等级设置为' B',然后检查> = 70并将其设置为' C'等。 ..
所以在你的例子中,你不仅会得到错误的结果,你还会做更多的检查!
答案 1 :(得分:1)
正如@schneida已经提到的那样else if
跳过条件检查先前的条件是否已经为真。如果在if情况下更改了条件,则跳过以下条件检查至关重要:
if (value > 100)
{
value *= 2.0; // get some big bonus
}
else if (value > 50)
{
value *= 1.5;
}
答案 2 :(得分:0)
假设testScore为93。 使用上面提到的代码,输出将是
成绩= A
但如果你更换"否则如果"使用" if",它会执行所有if语句,因为哪个等级首先设置为 A 然后再 B 然后再设置为 C 最后将设置为 D 。
所以最终答案是Grade = D
希望它能帮助你理解。
答案 3 :(得分:0)
您可以完全取消if
和else if
分支。加载Map<Integer, Character>
,其值包含十进制等级范围(0-10为F-A)。然后将给定的测试核除以10
以确定正确的等级。像,
Map<Integer, Character> map = new HashMap<>();
for (int i = 0 ; i < 6 ;i++) {
map.put(i, 'F');
}
map.put(6, 'D');
map.put(7, 'C');
map.put(8, 'B');
map.put(9, 'A');
map.put(10, 'A');
for (int testscore = 100; testscore >= 0; testscore--) {
int v = (int) (testscore / 10.0);
System.out.printf("%d %c%n", testscore, map.get(v));
}
在没有if
(s)的情况下输出所有可能的分数及其结果。