多个else / if语句的目的?如果那么其他声明不要单身

时间:2018-03-31 15:01:24

标签: java if-statement logic operand

我只是想知道是否有任何编写其他的目的,如果或者这是纯粹为了更好的代码可读性而编写的。例如,这段代码取自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”部分,只是如果会做同样的事情?如果有人能帮我解释一下,我会非常感激。感谢

4 个答案:

答案 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)

您可以完全取消ifelse 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)的情况下输出所有可能的分数及其结果。