0

私はそれを行う必要があるコードの一部を持っています: 1) キーボードから色の名前を取得します 2) その色を別のオブジェクト宣言があるオブジェクトに与えます 3) の配列の対応する行を 2 から 1 に減らします2.

メインクラスでは、変数 TemporaryColor の色を記憶したいと考えています。

Scanner input = new Scanner(System.in);
String TemporaryColor = input.nextLine();
playerOrd[1].DecrementoSegnalino(TemporaryColor);

playerOrd は、次のメソッドを含むクラスです。

public void DecrementoSegnalino(String color) {
    SegnalinoScommessaGiocatore.decrementaSegnaliniScommessa(color);    
}

SegnalinoScommessaGiocatore には次の配列があります。

private int[] numeroSegnaliniScommessa = {2,2,2,2,2,2};

そしてこの方法:

public void decrementaSegnaliniScommessa(String color) {
    if (color.equalsIgnoreCase("Black") numeroSegnaliniScommessa[0]--;
    if (color.equalsIgnoreCase("Blue") numeroSegnaliniScommessa[1]--;
    if (color.equalsIgnoreCase("Green") numeroSegnaliniScommessa[2]--;
    if (color.qualsIgnoreCase("Red") numeroSegnaliniScommessa[3]--;
    if (color.equalsIgnoreCase("Yellow") numeroSegnaliniScommessa[4]--;
    if (color.equalsIgnoreCase("White") ) numeroSegnaliniScommessa[5]--;    
    }

キーボードで書いた文字列を渡す際に問題があります...最初にこれを使用すると:

playerOrd[1].DecrementoSegnalino("Black");

できます!

どうしたの?

4

1 に答える 1

1

を使用して文字列を比較しないでください==。代わりにequals(...)またはメソッドを使用してください。equalsIgnoreCase(...)== は、2 つのオブジェクトが同じであるかどうかをチェックしますが、それはあなたが興味を持っているものではないことを理解してください。一方、メソッドは、2 つの文字列が同じ文字を同じ順序で持っているかどうかをチェックします。それがここで重要なことです。だから代わりに

if (fu == "bar") {
  // do something
}

行う、

if ("bar".equals(fu)) {
  // do something
}

また、

if ("bar".equalsIgnoreCase(fu)) {
  // do something
}
于 2013-06-15T22:52:36.650 に答える