Как получить наименьшее значение массива, начиная где-нибудь? - PullRequest
0 голосов
/ 12 июня 2019
public class Main{
    public static void main(String[] args){

        int[] a = {2,7,3,4,5,6,7,8};
        int merker = a[0];
        int i =4;
        int n = a.length;
        while(i<n){
            if(a[i] < merker)
                merker = a[i];
            i = i + 1;
        }
        System.out.print(merker);
    }
}

Я не понимаю, почему цикл while не начинается с 5-го числа массива, как я сделал int i = 4;.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Это так. Для проверки вы можете добавить оператор println:

$ cat Main.java
public class Main{
    public static void main(String[] args){

        int[] a = {2,7,3,4,5,6,7,8};
        int merker = a[0];
        int i =4;
        int n = a.length;
        while(i<n){
            System.out.println("Is " + a[i] + " < " + merker + "? "+ (a[i] < merker) );
            if(a[i] < merker)
                merker = a[i];
            i = i + 1;
        }
        System.out.print("merker = " + merker);
    }
}

$ java Main
Is 5 < 2? false
Is 6 < 2? false
Is 7 < 2? false
Is 8 < 2? false
merker = 2⏎
0 голосов
/ 12 июня 2019

Ваш процесс:

  • ваши merker значения 2,
  • вы ищете значение меньше его, начиная с 5-го значения,
  • нет меньшего значения,
  • результат 2

Чтобы получить наименьшее значение , начиная с 5-го значения, вам нужно инициализировать merker при высоком значении, таком как Integer.MAX_VALUE, я немного реорганизовал, чтобы использовать цикл for, это легче понять :

int min = Integer.MAX_VALUE;;
int startindice = 4;            >> a[4] is 5th value : {2,7,3,4,>>5<<,6,7,8}
for(int i = startindice; i < a.length; i++)
    if(a[i] < min)
        min = a[i];

Чтобы проверить, присутствует или нет значение, с простым циклом for

boolean isPresent(int[]array, int value){
    for(int i=0; i<array.length; i++)
        if(a[i] == value)
            return true;
    return false;
}

Для Java 8 способов: Как определить, содержит ли массив определенное значение в Java?

...