1

我只是尝试使用 Eclipse IDE 创建一个简单的程序,该程序获取用户输入,这将是他们的订单,使用 BufferedReader 获得的汉堡包、薯条或其他任何东西,现在假定为饮料。然后,使用条件语句,我将向用户输出该商品的成本,汉堡包为 4.50,薯条为 3.00,饮料或任何其他输入为 1.50:

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);
   }
}

我遇到的麻烦与存储用户输入的 order 变量有关: String order = 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。同样,我稍后会担心格式化。

任何帮助将不胜感激。

4

4 回答 4

1

您想使用 equals 进行测试,而不是 ==

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

}
于 2013-05-27T21:47:00.737 回答
1

永远不要将对象与==(枚举除外)进行比较。==测试两个表达式是否引用同一个对象。改为使用equals(),它测试两个表达式是否引用功能相等的对象(即在这种情况下字符串是否具有相同的字符)

于 2013-05-27T21:47:01.687 回答
1

不要将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()比较它们的值。

仅用于==比较原语或枚举。

于 2013-05-27T21:47:48.517 回答
1

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

于 2013-05-27T21:48:30.083 回答