2013-07-02 5 views
1

Я пытаюсь проверить, равна ли строка значению строкового массива, используя целое число с использованием метода indexOf. Вот что у меня есть:indexOf ... Как я могу это сделать?

public int[] COMPONENT_IDS = { 18, 22, 20, 10, 12, 14, 16 }; 
public String[] COMPONENT_STRINGS = { "pie", "chocolate bar", "donut", "baguette", "triangle sandwich", 
             "sandwich", "bread" }; 

public int[][] REWARDS = { {995, 5000000}, {12852, 625000}, {8851, 1250000} }; 

public void handleComponents(int c) { 
    for(int i : COMPONENT_IDS) { 
     if(i == c) { 
      if(answer.equals(COMPONENT_STRINGS[COMPONENT_IDS.indexOf(i)])) 
       sendReward(); 
      else 
       sendPunishment(); 
     } 
    } 
} 

Ошибка:

src\com\rs\game\player\content\AntiAFK.java:30: error: cannot find symbol 
          if(answer.equals(COMPONENT_STRINGS[COMPONENT_IDS 
.indexOf(i)])) 
^ 
    symbol: method indexOf(int) 
    location: variable COMPONENT_IDS of type int[] 

ответ

1

массива не IndexOf метод метод

Использование List's IndexOf

java.util.Arrays.asList(COMPONENT_IDS).indexOf(i); 

Вы должны преобразовать массив список с использованием Arrays полезный класс

+0

мм я не люблю его, делая новую структуру данных только для индекса – nachokk

+0

@nachokk hmm..you являются right..but оп нужен метод IndexOf! :) – Anirudha

+0

см. Мой ответ, нужно только изменить цикл – nachokk

3

Просто измените свой цикл, чтобы старинке

for(int index=0; index < COMPONENT_IDS.length ; index ++){ 
    //your code here 
     . 
     if(COMPONENT_IDS[index] == c) { 
    answer.equals(COMPONENT_STRINGS[index]); 
     . 
     . 
} 
+0

+1 ohh..yes..indeed, это лучший способ сделать это. – Anirudha

+0

я этого не делал .. – Anirudha

+0

Lol, извините, нажал не ту кнопку. –

Смежные вопросы