验证用户字符串输入

时间:2019-07-23 20:13:25

标签: java

我正在尝试完成一些家庭作业代码。但是这一行代码对我来说似乎无法正常工作。我希望用户仅输入以下字符串:大一,大二,大三或大四。其他任何输入均无效。

不知道还有什么尝试,我对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;
  }
}

我希望输入内容仅包括大一,大二,大三和大四,但不输入任何内容,而只会显示“请输入有效级别”。

2 个答案:

答案 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.");
        }