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

时间:2011-10-16 18:32:16

标签: 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;
        }
     }

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

3 个答案:

答案 0 :(得分: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;
    }
 }

答案 1 :(得分:13)

你想要使用&amp;&amp;看它不等于“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)短语(记住(无声)括号)

答案 2 :(得分:1)

更改你的||和&amp;&amp;所以只有当答案是“AM”而不是“PM”时它才会退出。