2016-06-14 9 views
0

Я пытаюсь получить минимальное и максимальное значение массива. Проблема в том, что я не уверен, что именно происходит в for-loop. Мы создаем for-loop с int. Затем приходит if-statement, а также мой вопрос: что должно означать numbers[i]? Я думал, что номера уже определен размер (9, инициализация {1,2,3, ..., 9}. Как мы можем изменить, что [i] и что же, что я стоять?минимальное и максимальное значение массива в Java

public class Array { 

public static void main(String[] args) { 
    int numbers[] = { 92, -108, 2, 120, 67, 4, -81, 9, 88, 1 }; 
    int min, max; 
    min = max = numbers[0]; 

    for (int i = 1; i < 10; i++) { 
     if (numbers[i] < min) 
      min = numbers[i]; 
     if(numbers[i] > max){ 
      max = numbers[i]; 
     } 
    } 
    System.out.println("min is: " + min + "; max is: " + max); 
} 
} 

ждем ваших ответов

+2

номера [i] ссылаются на индивидуальное число в массиве. поэтому, например, числа [0] равны 92, числа [1] - -108 и т. д. – terpinmd

ответ

2

numbers[i] как вы получаете доступ к элементу Ith в массиве.

0

Позволяет принимать Barebones того, что вы пытаетесь понять

int numbers[] = { 92, -108, 2, 120, 67, 4, -81, 9, 88, 1 }; 
int min, max; 
min = max = numbers[0]; 

for (int i = 1; i < 10; i++) { 
    if (numbers[i] < min) 
     min = numbers[i]; 
    if(numbers[i] > max){ 
     max = numbers[i]; 
    } 
} 

Во-первых, вы инициализируете массив чисел тем, что у вас есть в пределах {}. Таким образом, у вас есть массив длиной 10. Затем мы объявляем два значения min и max int. Значения как таковые:

numbers[0] = 92; 
numbers[1] = -108; 
numbers[2] = 2; 
numbers[3] = 120; 
numbers[4] = 67; 
numbers[5] = 4; 
numbers[6] = -81; 
numbers[7] = 9; 
numbers[8] = 88; 
numbers[9] = 1; 

Следующий оператор объявляет min и max в качестве первого элемента массива (0 является первым, вплоть до размера-1 для массивов, которые в данном случае 9).

min = numbers[0] (92). 
max = numbers[0] (92). 

Следующая часть представляет собой цикл for, в который входят все вычисления. Цикл for говорит о начале int с именем i в 1. Каждый раз, когда вы проходите через этот цикл, сравнивайте булево значение в середине, которое в этом случае равно i < 10, что означает, что i меньше 10, оставаясь в цикле , После каждой итерации выполните третью операцию, которая в этом случае равна i++, что означает приращение i переменной на 1.

Отлично, мы проходим цикл for. Давайте начнем с первой итерации, что означает, что i равно 1. Мы берем элемент SECOND массива numbers (0 - первый элемент, помните?) И сравнивая это с текущим значением min (что является первым элементом массива, 92).

Хорошо, если вы посмотрите на значения, -108, который является вторым элементом в массиве, меньше мин. Поэтому min теперь устанавливается на первый элемент массива. Затем мы сравниваем -108 и видим, если он больше max, что опять равно 92. -108 НЕ больше 92, поэтому он пропускает этот оператор if.

i = 1 
min = numbers[1] (-108). 
max = numbers[0] (92). 

Проходит вторую итерацию цикла for. Поскольку мы дошли до конца, мы делаем заявление i++. Теперь мы находимся на i = 2. Давайте проверим, чтобы мы не выходили. Является ли значение i менее 10? Да так давайте продолжим с вершины!

Это номера [2] (что на 2) меньше текущего значения min (-108)? Нет, пропустите этот оператор if. числа [2] больше текущего значения max (92)?Нет, давайте еще раз взглянуть на значения:

i = 2 
min = numbers[1] (-108) 
max = numbers[0] (92) 

Далее, так как мы находимся на дне, сделать i++. i теперь равны 3.

Это продолжается весь путь до конца до i = 9, так как при i = 10, он выходит из цикла для связи с этим средним утверждением в течение цикла, в пункте выхода.

+0

Удивительное объяснение! Я думаю, что понимаю, единственное, что меня беспокоит, это «Мы берем элемент SECOND из массива чисел (0 - это первый элемент, помните?) И сравнивая это с текущим значением min first» - я не вполне понятно, что числа [i] - как мы можем установить наш массив в целое число цикла for? – Rio

+0

@ Rio Я немного обновил. Но когда вы говорите 'numbers [i]', вы говорите, что получите значение 'i', которое объявлено в цикле for, а затем получите мне этот элемент из массива. Поэтому, если 'i' равно 1, и вы говорите' numbers [i] ', мы хотим получить второй элемент массива, потому что в массивах 0 является первым, а 1 - вторым. Как говорили другие, вам нужен i-й элемент в массиве. – Orin

1

As Andrew Rueckert mentioned, на Java, а также на большинстве других основных языков, нотация array[i] обеспечивает доступ к i-му элементу массива array. Вы можете использовать квадратные скобки [], чтобы указать размер массива в его определении, например:

int[] array = new int[10]; 

Но позже, можно использовать скобки, чтобы указать, какой элемент массива вы хотите иметь доступ. В вашем примере существует цикл for с итерацией от 1 до 10. На каждой итерации он считывает текущий (i) элемент из массива numbers.

+0

Хорошо, так что я должен считать, что это так - без магии или большой логики, - чтобы добраться до i-го элемента, вы используете массив [i]. Если я получу это правильно, это [i], потому что мы в цикле for. Если я хочу, я могу набрать массив [1] = x, array [2] = y и т. Д., И это точно то же самое – Rio

+0

@Rio, 'array [0]' дает вам доступ к первому элементу массива, ' array [1] 'ко второму и так далее. В вашем цикле 'for' есть' numbers [i] ', потому что в этом цикле вы инициализируете' int i', который увеличивается на каждом шаге цикла. Таким образом, 'numbers [i]' вложен в ваш цикл 'for', вы получаете доступ к каждому элементу массива' numbers'. – tomaszkrzyzek

0

Если вы хотите получить минимальное и максимальное значение из массива, вы можете использовать метод sort() класса java.util Arrays.

import java.util.Arrays; 

public class TestClass { 

public static void main(String[] args) { 
    int[] numbers = { 92, -108, 2, 120, 67, 4, -81, 9, 88, 1 }; 
    // print your array (no sorted) 
    System.out.println(Arrays.toString(numbers)); 

    Arrays.sort(numbers); 
    //print your array (sorted) 
    System.out.println(Arrays.toString(numbers)); 

    for(int i = 0; i<numbers.length;i++){ 
     System.out.println("My array: ["+i+"] " +numbers[i]); 
     // min = numbers[0] = -108 
     // My array: [0] -108 
     // My array: [1] -81 
     // My array: [2] 1 
     // My array: [3] 2 
     // My array: [4] 4 
     // My array: [5] 9 
     // My array: [6] 67 
     // My array: [7] 88 
     // My array: [8] 92 
     // My array: [9] 120 
     // max = numbers[9] = 120 
    } 
} 
} 
Смежные вопросы