1

我正在学习 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.

任何帮助将不胜感激,我相信这是一件非常微不足道的事情,也许是我忽略的事情。提前致谢,

弗雷德

4

1 回答 1

4

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

例如:

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

两个附加说明:

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