我在控制流程语句中使用用户输入时遇到了问题 - Java

我只是试图使用Eclipse IDE创建一个简单的程序,该程序获取用户输入,这将是他们的顺序,使用BufferedReader获取用于汉堡包,薯条,或其他什么,现在将被假定为饮料。然后,使用条件语句,我将输出项目到用户的成本,汉堡包是4.50,薯条是3.00和饮料或任何其它输入1.50:我在控制流程语句中使用用户输入时遇到了问题 - Java

public class Menu { 

public static void main(String args[]) throws IOException{

//double totalCost;

double cost;

//String order = "fries";

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Please enter your order: ");

String order = input.readLine();

System.out.println("You ordered a: " + order);

if (order == "hamburger"){

cost = 4.50;

} else if (order == "fries"){

cost = 3.00;

} else {

cost = 1.50;

}

System.out.println("Cost: " + cost);

}

}

我有麻烦了做的顺序的变量,其存储该用户输入: 字符串次序= input.readLine();

看来我能够成功地将用户输入存储到此String变量中,然后使用它下面的调试语句输出它。但是,当涉及到我的if-then-else语句时,它不会被正确评估,并且它会自动转到结束else语句,并输出1.5作为成本(稍后我会担心格式化,我只是试图现在获得功能)。

我甚至试图把SYSOUT在每个条件块为:

if (order == "hamburger"){ 

cost = 4.50;

System.out.println("Cost: " + cost);

}

else if (order == "fries"){

cost = 3.00;

System.out.println("Cost: " + cost);

}

else{

cost = 1.50;

System.out.println("Cost: " + cost);

}

..和我仍然得到同样的结果,它说费用:1.5。再次,我会担心后面的格式。

任何帮助将不胜感激。

回答:

不要比较String对象与==。而应使用.equals()方法。

if ("hamburger".equals(order)){ 

cost = 4.50;

System.out.println("Cost: " + cost);

}

else if ("fries".equals(order)){

cost = 3.00;

System.out.println("Cost: " + cost);

} else{

cost = 1.50;

System.out.println("Cost: " + cost);

}

你必须记住,是==比较两个变量是否指向之一,在内存中的同一地址,是否.equals()比较它们的值。

使用==只比较基元或枚举。

回答:

你想使用equals测试,而不是==

if (order.equals("hamburger")) { 

}

回答:

决不会比较的对象==(除枚举)。 ==测试两个表达式是否引用同一个对象。使用equals()代替,它测试两个表达式是否指向功能相同的对象(即,如果字符串在此情况下具有相同字符)

回答:

Java中的运算符==比较对象是否相同,而不是字符串本身。您应该改用equals()

以上是 我在控制流程语句中使用用户输入时遇到了问题 - Java 的全部内容, 来源链接: utcz.com/qa/264493.html

回到顶部