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

Pil*_*225 20 java string time if-statement user-input

我一直在尝试制作用户可以设置的时钟.我希望用户被问到问题,他们用"是"或"否"等字回答.我已经完成了使用此代码不会改变的事情,例如用户是否想要显示秒数,但是当我想要更改字符串时,它不起作用,例如从AM到PM当小时数超过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;
        }
     }
Run Code Online (Sandbox Code Playgroud)

每当我输入任何东西时,它提示我,无论我是AM,PM还是其他明智的,它都会给我错误,我写了然后退出.当我删除用错误终止程序的代码部分时,当小时数等于13时,它不会将字符串从AM更改为PM.感谢您的帮助,非常感谢.

Eng*_*uad 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;
    }
 }
Run Code Online (Sandbox Code Playgroud)


rat*_*eak 13

你会想用&&来看它不等于"AM"而不等于"PM"

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

要明确你也可以做

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

not (one or the other)在代码中使用短语(记住(沉默)括号)