2015-09-12 2 views
0

Это ява программа якобы печати чисел в массиве ниже:Печать массивов в Java встречными

public class Masterpiece { 

    public static void main(String[] args) { 

     int laser[] = new int[10]; 

     Scanner x = new Scanner(System.in); 
     System.out.println("Enter 10 numbers."); 

     for (int counter = 0; counter < laser.length; counter++) { 
      System.out.print("Enter a number: "); 
      laser[counter] = x.nextInt(); 
     } 

     Arrays.sort(laser); 

     for (int counter = 9; counter <= 0; counter--) { 
      System.out.println(laser[counter]); /** line 21 */ 
     } 

     System.out.println("Highest: " + laser[9]); 
     System.out.println("Lowest: " + laser[0]); 
    } 
} 

Однако, в строке 21, она не выводит элементы массива. Зачем?

Спасибо за чтение!

ответ

1

Ваш for цикл отсчитывает назад, но ваша условная часть цикла (counter <= 0) проверяет, нет ли counter чем или равно 0. Поскольку вы начинаете counter в 9, это условие немедленно терпит неудачу, потому что оно не меньше или равно 0 и не выполняется код внутри цикла. Вы хотите, больше или равно 0:

for (int counter = 9; counter >= 0; counter--) { 

Я также хотел бы предложить вам использовать длину массива здесь, так что если вы когда-либо отрегулировать размер, вы не должны изменять код цикла:

for (int counter = laser.length; counter >= 0; counter--) { 
+1

На самом деле, вы не сказали ОП, почему линия 21 не печатает элемент массива. Это потому, что заголовок цикла неверен, поэтому цикл не выполняется. Это главное. – Sweeper

+0

@Sweeper Согласен. Я добавил объяснение, почему. –

1
for (int counter = 9; counter >= 0; counter--) { 
    System.out.println(laser[counter]); 
} 

Но, как правило, лучше, если вы будете придерживаться стандартных форм:

for (int counter = 0; counter < laser.length; counter++) { 
    System.out.println(laser[counter]); 
} 

Или, лучше использовать оптимизированное для структуры:

for (int val : laser) { 
    System.out.println(val); 
} 
0

В цикле for вы инициализируете счетчик 9 и говорите, что цикл должен выполняться, когда 9 меньше или равно 0, а затем вы вычитаете один из них. Проблема в том, что когда программа сначала попадает в цикл for 9, она не меньше 0, поэтому значение ложно и пропускает цикл.

Лучше цикл будет:

For(int counter = 0; counter < 10; counter++) 
    { 
     System.out.println(laser[counter]); 
    } 
Смежные вопросы