Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java If语句不接受正确的值_Java_If Statement_Boolean - Fatal编程技术网

Java If语句不接受正确的值

Java If语句不接受正确的值,java,if-statement,boolean,Java,If Statement,Boolean,当我调试这段代码时,我注意到If语句从未将布尔型sales变量切换为true。。。这让我很烦恼,因为我知道在If语句中答案是“y”。救命啊!是的,我确实导入了java.util.Scanner Scanner input = new Scanner(System.in); boolean sales = false; String answer; System.out.print("Will you be calculating the Sales department pay aswell?

当我调试这段代码时,我注意到If语句从未将布尔型sales变量切换为true。。。这让我很烦恼,因为我知道在If语句中答案是“y”。救命啊!是的,我确实导入了java.util.Scanner

Scanner input = new Scanner(System.in);
boolean sales = false;
String answer;

System.out.print("Will you be calculating the Sales department pay aswell? (y or n):");
answer = input.nextLine().trim();

if (answer == "y")
{
    sales = true;
}

比较字符串的正确方法是:

if (answer.equals("y"))
请注意,在Java中,
equals()
用于测试对象之间的相等性,而
=
运算符用于测试标识。它们是两个不同的概念,大多数时候你对平等感兴趣

正如@MadProgrammer所建议的,颠倒比较顺序是一个好主意-如果
答案
,则比较安全:

if ("y".equals(answer))

您应该使用
equals()
来比较字符串:

if (answer.equals("y")) {

吹毛求疵——
“y”。等于(答案)
“y”。等于信号案例(答案)
可能更好suggestion@MadProgrammer公平地说,我更新了我的答案:)你看,现在我要投票给你:PNit Pick-
“y”。equals(答案)
“y”。equalsIgnoreCase(答案)
可能是一个更好的建议