If-statement 和逻辑运算符

If-statement and logical operators

我正在做入门课程书中的练习。练习是编写一个程序,提示用户输入两个字符,并显示字符所代表的专业和状态。第一个字符表示专业,第二个字符是数字字符 1、2、3、4,表示学生是大一、大二、大三还是大四。假设使用以下字符表示专业:

我:信息管理

C:计算机科学

甲:会计

首先输入字母字符,然后输入数字字符。到目前为止,只要两个字符都输入正确,程序就可以正常工作。如果字符输入错误,即 T3,程序应该打印 "Invalid input"。如果字母字符输入正确,数字字符输入错误,程序将打印 "Invalid input"。但是,如果字母字符输入错误,而数字字符输入正确,程序将打印一个空白 space 而不是专业,加上标题。在最后一个 if-statement 中,我试图创建一个条件,即如果输入 'I'、'C' 或 'A' 以外的任何其他字符以及数字字符不在 1 和 4 之间,程序应该打印 "Invalid input"。谁能看出哪里出了问题?下面的代码示例:

import java.util.Scanner;

public class MajorAndStatus {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String major = "";
        String title = "";

        System.out.println("Enter 2 characters: ");

        String inputString = input.nextLine();

        if (inputString.charAt(0) == 'I') {
            major = "Information Management";
        }
            else if(inputString.charAt(0) == 'C') {
                major = "Computer Science";
            }
            else if(inputString.charAt(0) == 'A') {
                major  = "Accounting";
            }


        if (inputString.charAt(1) == '1') {
            title = "Freshman";
        }
            else if(inputString.charAt(1) == '2') {
                title = "Sophomore";
            }
            else if(inputString.charAt(1) == '3') {
                title  = "Junior";
            }
            else if(inputString.charAt(1) == '4') {
                title  = "Senior";
            }

        if (((inputString.charAt(0) != 'I' || inputString.charAt(0) != 'C' || inputString.charAt(0) != 'A')) & ((inputString.charAt(1) < '1' || inputString.charAt(1) > '4'))) {
            System.out.println("Invalid input");
        }
        else {
            System.out.println(major + " " + title);
        }

    }
}

为什么不在程序底部检查错误,为什么不在 if 语句中添加 else,这将打印 invalid input.

可能是这样的:

if (inputString.charAt(0) == 'I') {
    major = "Information Management";
}
else if(inputString.charAt(0) == 'C') {
    major = "Computer Science";
}
else if(inputString.charAt(0) == 'A') {
    major  = "Accounting";
}
else {
    System.out.println("Invalid input");
}

您也可以将相同的 else 添加到第二个字符的 if 语句中。

您的打印条件 Invalid Input 错误。

应该是

if (((inputString.charAt(0) != 'I' && inputString.charAt(0) != 'C' && inputString.charAt(0) != 'A')) || ((inputString.charAt(1) < '1' || inputString.charAt(1) > '4')))

但是,我会删除那个 if 语句。

相反,在您的 if-else-if 语句中添加一个 else 子句:

    if (inputString.charAt(0) == 'I') {
        major = "Information Management";
    } else if(inputString.charAt(0) == 'C') {
        major = "Computer Science";
    } else if(inputString.charAt(0) == 'A') {
        major  = "Accounting";
    } else {
        System.out.println("Invalid input");
    }

    if (inputString.charAt(1) == '1') {
        title = "Freshman";
    } else if(inputString.charAt(1) == '2') {
        title = "Sophomore";
    } else if(inputString.charAt(1) == '3') {
        title  = "Junior";
    } else if(inputString.charAt(1) == '4') {
        title  = "Senior";
    } else {
        System.out.println("Invalid input");
    }

    if (!major.equals("") && !title.equals("")) {
        System.out.println(major + " " + title);
    }

编辑:

如果您希望 "Invalid Input" 只打印一次,您可以检查 majortitle 变量的值以确定是否输入了正确的输入:

    if (inputString.charAt(0) == 'I') {
        major = "Information Management";
    } else if(inputString.charAt(0) == 'C') {
        major = "Computer Science";
    } else if(inputString.charAt(0) == 'A') {
        major  = "Accounting";
    }

    if (inputString.charAt(1) == '1') {
        title = "Freshman";
    } else if(inputString.charAt(1) == '2') {
        title = "Sophomore";
    } else if(inputString.charAt(1) == '3') {
        title  = "Junior";
    } else if(inputString.charAt(1) == '4') {
        title  = "Senior";
    }

    if (!major.equals("") && !title.equals("")) {
        System.out.println(major + " " + title);
    } else {
        System.out.println("Invalid input");
    }

两个答案都没有检测到字符串太短的问题(IndexOutOfBoundsException)

替换

   String inputString = input.nextLine();

    if (inputString.charAt(0) == 'I') {
    ... }

    String inputString = input.nextLine();
    if(inputString.length<2) {
         System.out.println("Type a least 2 charactyes");
    }
    if (inputString.charAt(0) == 'I') {
    ... }