如何检查字符串是否不等于java中的对象或其他字符串值?

2022-09-02 09:15:03

我一直在尝试制作用户可以设置的时钟。我希望用户被问到问题,他们用“是”或“否”这样的词来回答。我已经用这个代码做了一些不会改变的事情,比如用户是否希望显示秒,但是当我想要字符串改变时,它就不起作用了, 比如说,当小时数超过 12 时,从上午到下午。这是我正在使用的内容:

    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。感谢您的帮助,非常感谢。


答案 1

将代码更改为:

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;
    }
 }

答案 2

你会想使用&&来查看它不等于“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)