我正在尝试完成一些家庭作业代码。但是这一行代码对我来说似乎无法正常工作。我希望用户仅输入以下字符串:大一,大二,大三或大四。其他任何输入均无效。
不知道还有什么尝试,我对java还是很陌生。
while (true) {
System.out.println("Enter undergraduate level: ");
lvl = inReader.nextLine();
if (lvl != "freshman" || lvl != "sophomore" || lvl != "junior" || lvl != "senior") {
System.out.println("Please enter valid level.");
} else {
break;
}
}
我希望输入内容仅包括大一,大二,大三和大四,但不输入任何内容,而只会显示“请输入有效级别”。
答案 0 :(得分:-1)
我建议使用适当的IDE。大多数IDE会向您表明,您尝试比较两个不等于等值的字符串时犯了一个错误。
背景:Java将String存储为字符数组。如果您将两个字符串与“ ==”进行比较,则会比较字符数组的位置,而不是它们的内容。
因此,您应该调用string.equals(otherString),因为这将比较基础数组的内容。如果数组中每个位置的字符都匹配,则.equals()的计算结果为true,否则为false。
答案 1 :(得分:-2)
更改所有的“ ||”到“ &&”
if (!"freshman".equals(lvl) && !"sophomore".equals(lvl) && !"junior".equals(lvl) && !"senior".equals(lvl)) {
但是,甚至最好创建一个有效字符串集,并检查您输入的字符串是否在该字符串集中。
Set<String> validStrings = new HashSet<>();
validStrings.add("freshman");
validStrings.add("sophomore");
validStrings.add("junior");
validStrings.add("senior");
...
if(!validStrings.contains(lvl) {
System.out.println("Please enter valid level.");
}