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

2 つの追加メモ:

  1. この使用例では.equalsIgnoreCase、大文字と小文字を無視して等価性をチェックする を使用できます。たとえば、これは、ユーザーが「ford」、「Ford」、「FORD」、「fOrD」などを入力したかどうかに関係なく、最初のケースをトリガーします。
  2. 一部の開発者は、Yoda Conditions規則を使用することを好みます。これにより、条件は のように記述されif ("ford".equals(carMake))ます。などのインスタンス メソッドと一緒に使用すると.equals、微妙なNullPointerExceptions情報がコードに漏れるのを防ぐことができます。演算子と一緒に使用すると、==誤った割り当てを防ぐことができます。
于 2013-08-26T18:42:12.243 に答える