Java 正在验证用户字符串输入

Java 正在验证用户字符串输入,java,Java,我正在努力完成一些家庭作业的代码。但是这一行代码对我来说似乎并不正确。我希望用户只输入以下字符串:大一、大二、大三或大四。任何其他输入都是无效的 不知道还可以尝试什么,我对java相当陌生 while (true) { System.out.println("Enter undergraduate level: "); lvl = inReader.nextLine(); if (lvl != "freshman" || lvl != "sophomore" || lvl != "j

我正在努力完成一些家庭作业的代码。但是这一行代码对我来说似乎并不正确。我希望用户只输入以下字符串:大一、大二、大三或大四。任何其他输入都是无效的

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

我希望输入只接受大一、大二、大三和大四的输入,但它不接受输入,只显示“请输入有效级别”。

将所有的“| |”更改为“&&&”

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.");
        }
Set validStrings=new HashSet();
有效字符串。添加(“新生”);
有效字符串。添加(“二年级”);
有效字符串。添加(“初级”);
有效字符串。添加(“高级”);
...
如果(!validStrings.contains)(lvl){
System.out.println(“请输入有效级别”);
}

我建议使用合适的IDE。大多数IDE都表明,试图比较两个不相等的字符串是错误的

背景:Java将字符串存储为字符数组。如果将两个字符串与“==”进行比较,则会比较字符数组的位置,而不是它们的内容


因此,您应该调用string.equals(otherString),因为这会比较基础数组的内容。如果数组中每个位置的字符匹配,.equals()的计算结果为true,否则为false。

这一点,OP还需要解决字符串比较的问题。这是如何获得追加投票的?成功了!谢谢!