在Java中使用String包含

时间:2011-10-02 15:37:33

标签: java contains

我有一个名为trip的字符串。在这个字符串中,敌方玩家选择了3个值。 我希望等于其中一个值的按钮改变它们的颜色。

for(int i = 0; i <=Lobby.baanlengte;i++){
    if ((trips.contains(Speler1[i].getActionCommand()))) {
         System.out.println("Trips bevat"+i);              
         Speler1[i].setBackground(Color.gray);
    }
}    

假设字符串跳闸是3,11,14,我希望按钮3,11和14改变颜色。这些按钮实际上会改变,但是1和4也会改变,因为这些数字在11和14中,这不是我想要的。

如果有人知道如何解决这个问题,我将不胜感激。

4 个答案:

答案 0 :(得分:3)

您应首先使用分隔符, split输入字符串,然后使用.equals比较比较每个部分。

答案 1 :(得分:2)

不要将String用作其他字符串的容器。使用java.util.Set<String>

Set<String> trips = new HashSet<String>();

// ...

if (trips.contains(Speler1[i].getActionCommand())) {
    System.out.println("Trips bevat"+i);              
    Speler1[i].setBackground(Color.gray);
}

这将有其他优势:

  • 它将避免玩家组中的重复
  • 它可以让你轻松地从集合中添加和删除玩家

注意:Java中的变量应始终以小写字母开头。

答案 2 :(得分:0)

将字符串拆分为数组

参见文档:http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split(java.lang.String

String trips_array[] = trips.split(",");
for(int i = 0; i < trips_array.length; i++){
    Speler1[i].setBackground(Color.gray);
}

答案 3 :(得分:0)

解决了这个问题。 String有一些空格。在更换它们之后,一切都工作,因为它应该工作。谢谢你的帮助:)

字符串跳闸例如[13,14,16]。

trips = trips.replace("[", " ");
trips = trips.replace("]", " ");
trips = trips.replace(" ", "");
String parts[] = trips.split(",");

for(int i = 0; i <= Lobby.baanlengte; i++){
    for (String item : parts){
        if(item.equals(Speler1[i].getActionCommand())){
            Speler1[i].setBackground(Color.gray);
        }
    }
}