【问题标题】:Understanding java conditionals [duplicate]了解java条件[重复]
【发布时间】:2013-08-29 08:04:27
【问题描述】:

我正在学习 Java,但我很难理解为什么我正在编写的一个简单程序无法按应有的方式运行。

import java.util.Scanner;

class CarApp{
String carMake;
String carColour;
String features;
int carPrice;

void carFinal(){
    System.out.println(carMake);
    System.out.println(carPrice);
    if(carMake == "ford")
    {
        carPrice = 120000;
    }
    else if(carMake == "porsche")
    {
        carPrice = 1000000;
    }
    System.out.println(carPrice);
    System.out.println("Thank you for choosing your car with the car chooser app!" + "\n");
    System.out.println("You have chosen a " + carColour + " " + carMake + " with " + features + "\n" );
    System.out.println("Your car will be delivered to you in 7 working days. At a price of R" + carPrice + ".");
}
}

public class App {
public static void main(String[] args) {
    Scanner carChooser = new Scanner(System.in);

    CarApp carApp = new CarApp();
    System.out.println("Please let us know which car you would like, porsche or ford:");
    carApp.carMake = carChooser.nextLine();
    System.out.println("Please say which color car you would like:");
    carApp.carColour = carChooser.nextLine();
    System.out.println("Which features would you like added to your car:");
    carApp.features = carChooser.nextLine();
    carApp.carFinal();

}
}

系统似乎没有打印价格?所以我总是得到以下信息:

Your car will be delivered to you in 7 working days. At a price of R0.

任何帮助将不胜感激,我敢肯定这是非常微不足道的事情,也许是我忽略了的事情。提前致谢,

弗雷德

【问题讨论】:

  • @RohitJain 在这一点上,我认为大约 10% 的带有 Java 标记的第一个问题涉及错误地比较字符串。我们需要一个公共服务公告。

标签: java conditional


【解决方案1】:

比较字符串时,您应该使用.equals

例如:

if(carMake.equals("ford"))
{
    carPrice = 120000;
}
else if(carMake.equals("porsche"))
{
    carPrice = 1000000;
}

两个附加说明:

  1. 对于这个用例,您可能希望使用.equalsIgnoreCase,它会检查是否相等,而忽略大小写。例如,无论用户是否输入了“ford”、“Ford”、“FORD”、“fOrD”等,都会触发第一种情况。
  2. 一些开发人员更喜欢使用Yoda Conditions 约定,这导致条件句被写成if ("ford".equals(carMake))。当与.equals 等实例方法一起使用时,它可以防止微妙的NullPointerExceptions 泄漏到您的代码中。与== 运算符一起使用时,可以防止意外分配。

【讨论】:

  • 谢谢乔纳森。来自脚本语言,这有点奇怪。现在说得通了。
猜你喜欢
  • 2015-06-27
  • 2017-01-07
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多