2015-06-24 4 views
-2

У меня есть метод, где я запускаю массив.Как напечатать индекс массива

public static void findPairs(double[] c) { 

    for (int i = 0; i < c.length; i++) { 
     if (c[i] * c[i + 1] >= c[i] + c[i + 1]) { 
      System.out.println(); 
      } 
    } 
} 

Значение массива:

c[0]0.5 
c[1]1.5 
c[2]2.0 
c[3]2.0 
c[4]3.0 
c[5]5.02 

мне нужно напечатать индексы массива, которые являются подходящими в if выражении. Есть ли какой-то метод, и я этого не знаю?

Например:

(1,4), так как 1,5 * 3,0 = 4,5> = 4,5 = 1,5 + 3,0

(2,4) и (3,4), так как 2,0 * 3,0 = 6,0> = 5,0 2,0 + 3,0

т.д.

Благодаря

+4

Может быть, вам нужно 'System.out.println (I);' –

+0

Вы будете работать в 'ArrayIndexOutOfBoundsError', когда ваш' 'i' достигает гр. length - 1', потому что 'c [i + 1]' будет за пределами. – RealSkeptic

+0

Моя печать должна быть в таком формате: (1,4) –

ответ

0

Заменить

System.out.println(); 

с

System.out.println('(' + c[i] + ',' + c[i+1] + ')'); 

Ну и еще одна вещь, так как вы не пытаетесь соединить ряд с самим собой, вы только хотите, чтобы достичь второго к последнему элементу, который вы пытаетесь пара с последним элементом. Так же заменить

for (int i = 0; i < c.length; i++) { 

с

for (int i = 0; i < c.length - 1; i++) { 

Но это еще не произведет желаемого результата, то есть (1,4), потому что вы только попытаться пару п-й элемент с п + 1- го элемента. Вам нужно будет использовать две петли, как это:

for (int i = 0; i < c.length - 1; i++) { 
    for (int j = i; j < c.length; j++) { 
    if (c[i] * c[j] >= c[i] + c[j]) { 
     System.out.println('(' + c[i] + ',' + c[j] + ')'); 
    } 
    } 
} 
Смежные вопросы