Java的。输出错误

时间:2017-11-20 11:11:25

标签: java if-statement

package assignmentone;

import java.util.Scanner;

public class AssignmentOne {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("Welcome to the University Credit Checker");
        System.out.println("Enter Pass Credits");

        if (in.hasNextInt()) {
            int passCredits = in.nextInt(); //Correct

            if (passCredits != 0 || passCredits != 20 || passCredits != 40
                    || passCredits != 60 || passCredits != 80 || passCredits != 100 || passCredits != 120)
            {
                System.out.println("Error: Enter Valid Input Type: 0, 20, 40, 60, 80, 100 or 120");
            } // Correct

            else if (passCredits == 0 || passCredits == 20 || passCredits == 40 || passCredits == 60
                    || passCredits == 80 || passCredits == 100)
            {
                System.out.println("Enter Defer Credits");
            }
           // Get rid of output Error: Enter Valid Input Type: 0, 20, 40, 60, 80, 100 or 120

            else if (passCredits == 120){
                System.out.println("Progress");
            }
            // Get rid of output Error: Enter Valid Input Type: 0, 20, 40, 60, 80, 100 or 120

        } else {
            System.out.println("Error: Enter Valid Input Type: Integer");
        } //Correct

    }
}

大家好。

我是Java的新手,我正在尝试创建一个使用用户输入的程序,以及用户验证。我创建了第一部分。

对于这部分,我有一个用户验证,以确保他们输入整数类型。哪个工作正常

在此之后,我有一个用户验证,以确保他们输入0,20,40,60,80,100和120.这将出现错误。这也正常。

什么不能正常工作当他们输入0,20,40,60,80或100的数字时,我希望显示“输入延迟信用”的简单输出。有了这个,我希望当用户输入120“简单输出”“进度”显示时。

对于这两个部分,“错误:输入有效输入类型:0,20,40,60,80,100或120”显示而不是预期的“输入延迟信用”或“进度”。

看看上面的代码,我想知道为什么会这样?目前我完全坚持为什么会这样。

提前致谢。 :)

2 个答案:

答案 0 :(得分:1)

正如Faithiun回答的解释,你的逻辑运算符有误。

但是如果你使用一些数学逻辑,你可以减少布尔表达式的数量,减少错误的风险。

您的条件检查20的第一个倍数。使用% 20,您可以获得更简单的解决方案

if( passCredits % 20 == 0){ //Is it a multiple
    int multPass = passCredits / 20; 
        //divide by 20 to the position of that multiple (
        //0 = 0
        //20 = 1
        //40 = 2
        //...
    if( multiPass >= 0 && muttipass <= 6){
        // Enter Defer Credits
    } else { 
        //Progress
    }
} else {
    //"Error: Enter Valid Input Type: 0, 20, 40, 60, 80, 100 or 120"
}

答案 1 :(得分:0)

替换

if (passCredits != 0 || passCredits != 20 || passCredits != 40
                || passCredits != 60 || passCredits != 80 || passCredits != 100 || passCredits != 120)
        {
            System.out.println("Error: Enter Valid Input Type: 0, 20, 40, 60, 80, 100 or 120");
        }

通过

if (passCredits != 0 && passCredits != 20 && passCredits != 40
                && passCredits != 60 && passCredits != 80 && passCredits != 100 && passCredits != 120)
        {
            System.out.println("Error: Enter Valid Input Type: 0, 20, 40, 60, 80, 100 or 120");
        } // Correct