2013-10-10 3 views
3
protected double[] cpi = { 10, 10.1, 10.3, 11.6, 13.7, 16.5 } 
    protected CharSequence[] fromDate = { 
      "1914", 
      "1915", 
      "1916", 
      "1917", 
      "1918", 
      "1919"}; 
    protected CharSequence[] toDate = { 
      "1914", 
      "1915", 
      "1916", 
      "1917", 
      "1918", 
      "1919"}; 

Я пытаюсь следующее:Как получить индекс массива

double factor = cpi[frmDate[k]]/cpi [toDate[k]]; 

Я получаю следующее сообщение об ошибке для обоих:

Несоответствие типа: не удается преобразовать из CharSequence в целое

Несоответствие типа: не может быть преобразован из CharSequence в int

То, что я пытаюсь сделать, это ... Если выбор для fromDate является индекс = 2 и toDate является индекс = 3, то вычислить следующее:

double factor = cpi[10.3]/cpi[11.6]; 
+1

Как вы думаете, 'ИВК [10.3]' означает? –

+0

'cpi [10.3]' принимает индекс выбранного 'fromDate' и получает значение от' cpi' – Si8

+1

, вам нужно использовать индексную позицию элемента, а не фактическое значение элемента, поэтому больше похоже на 'cpi [2]/cpi [3] ' – kabuto178

ответ

3

Вы, наверное, хотите:

protected double[] cpi = { 10, 10.1, 10.3, 11.6, 13.7, 16.5 } 
    protected CharSequence[] fromDate = { 
      "1914", 
      "1915", 
      "1916", 
      "1917", 
      "1918", 
      "1919"}; 
    protected CharSequence[] toDate = { 
      "1914", 
      "1915", 
      "1916", 
      "1917", 
      "1918", 
      "1919"}; 
String year1 = "1915"; 
String year2 = "1918"; 
indexYear1 = Arrays.asList(fromDate).indexOf(year1); //find the position (index) of year1 => 1 
indexYear2 = Arrays.asList(toDate).indexOf(year2); //find the position (index) of year2 => 4 
double factor = cpi[indexYear1]/cpi[indexYear2]; // => 10.1/13.7 
+0

'fromDate' и' toDate' - это индекс выбора, который может изменяться на основе пользователя и никогда не является постоянным. – Si8

+0

Возможно, это может сработать. Если x представляет массив charsequence. Чем я могу принять значение, которое от выбора и сопоставить его и получить индекс? Обозначает ли символ 'x' переменную charsequence? – Si8

+0

Ошибка «x», теперь она исправлена. – libik

1

Вобще:

double factor = cpi[k]/cpi[j]; 

Где k - это индекс выбора для frmDate и где j является индексом выбора для toDate.

Потому что прямо сейчас вы пытаетесь использовать строки как индекс для массива. Я предполагаю, что вы хотите использовать тот же индекс для массива cpi.

Для того чтобы вычислить k и j, создайте функцию getIndex(CharSequence[] array, CharSequence item).

Вот некоторые псевдо-код:

private int getIndex(CharSequence[] array, CharSequence item) { 
    for(int a = 0; a < array.length; a++) { 
     if array[a] is item 
      return a; 
    } 
    return -1; //not in it 
} 
+0

OP фактически спрашивает, как вычислить 'k' и' j'. – harpun

+0

Я на самом деле использую K для обоих, поэтому J не входит в игру. – Si8

+0

Предполагая, что вы используете 'frmDate [k]', я предполагаю, что OP уже знает, что такое 'k'. Хотя, если они не соответствуют напрямую, я добавлю в другой раздел. – Clark

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