面向对象为什么这种评分方法不起作用?

时间:2018-04-17 14:30:10

标签: java

我想知道如果我删除了我的第二个,如果点数高于100打印输入较低的分级点这不起作用,但是当我输入-100时,它的原理是什么呢?

public class nameofclass {

    private int grade;

    public void enterGrade(int points) {

        if(points > 0) {
            grade = grade + points;
        } else {
            if(points > 100) { 
                System.out.println("Enter a lower grading point");
            }
            System.out.println("Enter positive grading point");
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您的第一个if过滤器指向超过0,这意味着当较少时, JVM仅转到else大于或等于0 。所以你的第二个if永远不会被执行。

if(points > 0) {
    ...
} else {
    //only if points are less than or equal 0

    if(points > 100) {
        //never runs
    }
}

所以请将第二个if放在第一个if内,

if(points > 0) {
    if(points > 100) {
        System.out.println("Enter a lower grading point");
    }
} else {
    //only if points are less than or equal 0
}

答案 1 :(得分:1)

根据你的代码:

Points : 120

首先,if语句总是为真,因为(点> 100) 所以它不会成为其他部分。

Points: -100 

首先,if语句为false,然后转到else部分。 然后:if(points> 100)语句为false。并打印值:输入正分级点