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(...)orequalsIgnoreCase(...)方法。了解 == 检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这在这里很重要。所以而不是

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

做,

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

或者,

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