Из всех чисел в каждой строке, которые меньше 1, выберите самое высокое и второе по величине

#java

#java

Вопрос:

У меня есть практика, чтобы найти 2 самых больших числа в каждой строке матрицы, но оно должно быть меньше 1.

например, матрица:

 1,000   0,283   0,372   0,962   
0,283   1,000   0,915   0,232   
0,372   0,915   1,000   0,253   
0,962   0,232   0,253   1,000   
 

поэтому я ожидал, что результат должен быть:

 0,962   0,372
0,915   0,283
0,915   0,372
0,962   0,253
 

То, что я сделал до сих пор, не дало мне выхода в разделе консоли
Это мой код:

 public static double[][] Neighbor(double a[][], int m,int n)
{
    double first,second;
first = second = -100;
    double [][]neighbors = new double[m][2];

for(int i = 0; i<m ;i  )
{
 for(int j = 0; j<n;j  )
     if( a[i][j] > first amp;amp; a[i][j] < 1)
    {
        second = first;
        first = a[i][j];
        neighbors[i][1] = first;
    }

      else if( a[i][j] > second amp;amp; a[i][j] < 1)
    {
        second = a[i][j];
        neighbors[i][2] = second;
    }
    }
    }   
return neighbors;
}
 

в основном:

 double[][] neighbors = new double[m][2];
neighbors = Neighbor(Ybar,m,m);
System.out.println(); 
for(int i = 0; i < m; i  )
   {
     for(int j = 0; j < 2; j  )
     {              
        System.out.printf("%.3f   ", neighbors[i][j] );
     }
     System.out.println();
}
 

Есть ли какие-либо проблемы с моей соседней функцией?
Я новичок в Java 🙂

Комментарии:

1. 2 Наибольшее число в каждой строке <1?

2. извините за мой плохой английский. Я действительно не знаю, как описать эту ситуацию. Я был бы признателен, если бы вы помогли мне с грамматикой 🙂

3. @MariosNikolaou: Из всех чисел в каждой строке, которые меньше 1, выберите самое высокое и второе по величине.

4. @Amadan ok понял.

5. Индексы массива начинаются с 0, а не с 1. Смотрите: neighbors [i][1] и neighbors [i][2] . Вы не сбрасываете второе и первое обратно на -100 после завершения одной строки.