Использование содержит строку в Java - PullRequest
1 голос
/ 02 октября 2011

У меня есть строка под названием поездки.В этой строке есть 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 ]

3 голосов
/ 02 октября 2011

Сначала необходимо split во входной строке, используя разделитель ,, затем сравнить каждую часть, используя .equals сравнение.

2 голосов
/ 02 октября 2011

Не используйте строку в качестве контейнера других строк.Используйте 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 всегда должны начинаться со строчной буквы.

0 голосов
/ 03 октября 2011

Решил это.У Струны были пробелы.После их замены ничем все заработало как надо.Спасибо за помощь :)

Строковые поездки, например [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);
        }
    }
}
0 голосов
/ 02 октября 2011

Разбить строку на массив

см. Документацию: 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);
}
...