Java中如何检查一个字符串不等于一个对象或其他字符串值?

20

我一直在尝试制作一个用户可以设置的时钟。我希望用户被问问题并用诸如“是”或“否”的单词回答。对于那些不会改变的事情,例如用户是否想要显示秒数等,我已经使用了这段代码。但是当我希望字符串发生变化时,比如小时超过12时从AM变为PM,它就不太有效了。以下是我正在使用的代码:

    System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in);
    TimeOfDayStringQ = TimeOfDayQ.next();

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) {
        System.out.println("Sorry, incorrect input.");
        System.exit(1);
    }

    ...

    if(Hours == 13){
        if (TimeOfDayStringQ.equals("AM")) {
            TimeOfDayStringQ.equals("PM");
        } else {
            TimeOfDayStringQ.equals("AM");
        }
                Hours = 1;
        }
     }
每次在提示输入时,无论我输入AM、PM或其他内容,程序都会给出我写的错误并退出。当我删除终止程序的错误代码后,程序在小时数等于13时仍无法将字符串从AM更改为PM。感谢您的帮助,非常感激。

3
为避免混淆,观察发现Java变量应以小写字母开头。 - Andrei Ciobanu
3个回答

26

将您的代码更改为:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in);
TimeOfDayStringQ = TimeOfDayQ.next();

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <--
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

...

if(Hours == 13){
    if (TimeOfDayStringQ.equals("AM")) {
        TimeOfDayStringQ = "PM"; // <--
    } else {
        TimeOfDayStringQ = "AM"; // <--
    }
            Hours = 1;
    }
 }

13

你需要使用 && 来判断它既不等于 "AM" 也不等于 "PM"

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) {
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

清楚地说,你也可以这样做

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

在代码中使用not (one or the other)短语(记得保留(静默的)括号)


非常感谢。我对Java还比较新,这可能就是为什么我犯了这么简单的错误。非常感谢。 - Pillager225

1

将您的||更改为&&,这样它只会在答案既不是"AM"也不是"PM"时退出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接