我在控制流程语句中使用用户输入时遇到了问题 - 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