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" 只打印一次,您可以检查 major
和 title
变量的值以确定是否输入了正确的输入:
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') {
... }
我正在做入门课程书中的练习。练习是编写一个程序,提示用户输入两个字符,并显示字符所代表的专业和状态。第一个字符表示专业,第二个字符是数字字符 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" 只打印一次,您可以检查 major
和 title
变量的值以确定是否输入了正确的输入:
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') {
... }