2015-02-09 7 views
-2

/* Я взял две переменные с начальными значениями массива, чтобы у нас было что-то, что можно сравнить с самыми большими и наименьшими. затем цикл для проверки каждого числа массива с по умолчанию для большего и меньшего, а если нет, то будет заменен, но почему мой ответ наступает неправильно? */для печати самого маленького и самого большого нет в массиве (java)

class twod { 

    public static void main(String ...NR){ 

     int a[][] = {{11,21,31},{9,22,23}}; 
     int maximum = a[0][0]; 
     int minimum = a[0][0]; 

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

      for(int j=0;j<a.length;j++){ 
       if(a[i][j]>maximum){ 
        maximum = a[i][j]; 
       } 
       else if(a[i][j]<minimum){ 
        minimum = a[i][j]; 
       } 
      } 
     } 
     System.out.println("Largest no is " + maximum); 
     System.out.println("Smallest no is " + minimum); 
    } 

} 
+0

Используйте некоторые утверждения печати внутри своих циклов, чтобы посмотреть, какие переменные находятся в любой заданной точке, и вы должны увидеть, что происходит не так. – csmckelvey

+0

Вы должны попытаться подсчитать, сколько раз вы фактически вводите внутренний цикл. – Compass

+0

печать будет выглядеть примерно так: 'intL @ 193747' справа? – Mordechai

ответ

0

Ваша внутренняя петля только петли j через допустимых значений i (j<a.length), что составляет 0-1, а не 0-2.

Завершите действительные значения индекса массива a[i], а не действительные значения индекса массива a. Изменение

for(int j=0;j<a.length;j++){ 

в

for(int j=0;j<a[i].length;j++){ 
+0

ohh получил это, хорошо, что это можно сделать так же, как для (int j = 0; j <= a.length; j ++) ..... хорошо, я вижу подобное заявление в первый раз "j user3651808

+0

Если 'i' является' 1', то 'a [i]' относится к {9, 22, 23}, а 'a [i] .length' -' 3'. – rgettman

0

В You коде for(int j=0;j<a.length;j++) здесь a.length = 2. Таким образом, он не проверяет следующие цифры.

Измените его на for(int j=0;j<a[i].length;j++), тогда он будет работать.

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