работа с числами в массиве java

307
24 апреля 2018, 04:30

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

public static void main(String[] args) {
    int[] array = new int[5];
    int result = array[0];
    int n = 0;
    int sum = 0;
    int num = 0;
    boolean prime = true;
    boolean pal = true;
    Scanner sc = new Scanner(System.in);
    for (int i = 0; i < array.length; i++) {
        System.out.print("Введите " + i + "-ое число: ");
        array[i] = sc.nextInt();
    }
    System.out.println("");
    System.out.print("Четные числа: ");
    for (int x = 0; x < array.length; x++) {
        if (array[x] % 2 == 0) {
            n++;
            sum += array[x];
            System.out.print(array[x] + "; ");
        }
    }
    System.out.println("");
    System.out.println("Количество четных чисел = " + n);
    System.out.println("Самое большое число: "); // багованое. проходит по нескольким числам
    for (int a = 0; a < array.length; a++) {
        if (array[a] > result) {
            result = array[a];
            System.out.println(array[a]);
            System.out.println("Количество цифр в большом числе = " + String.valueOf(array[a]).length());
        }
    }
    for (int d = 0; d < array.length; d++) {
        if (array[d] < result) {
            result = array[d];
            System.out.println("Самое короткое число = " + array[d]); // и это багованое
            System.out.println("Количество цифр в коротком числе = " + String.valueOf(array[d]).length());
        }
    }
    System.out.println("Деленные на 3: ");
    for (int b = 0; b < array.length; b++) {
        if (array[b] % 3 == 0)
            System.out.print(array[b] + "; ");
    }
    System.out.println("");
    System.out.println("Деленные на 5: ");
    for (int c = 0; c < array.length; c++) {
        if (array[c] % 5 == 0)
            System.out.print(array[c] + "; ");
    }
    System.out.println("");
    for (int e = 0; e < array.length; e++) {
        if (array[e] == 1) {
            System.out.println(array[e] + " ");
        }
    }
    System.out.println("Простые числа: "); // багованное
    for (int j = 2; j < array.length; j++) {
        if (array[j] % j == 0)
            prime = false;
        if (prime)
            System.out.print(array[j] + "; ");
        System.out.println("");
        for (int l = 0; l < array.length / 2; l++) {
            if (array[l] != array[array.length - l - 1]) {
                pal = true;
                System.out.println(array[l] + " палиндром");
            }
        }
        System.out.println("");
        System.out.println("Числа в массиве = " + Arrays.toString(array));
    }
}

upd 20:21 Результат в большинстве случаев такой:

Answer 1

В ответе выше после прохождения цикла надо выводить полученный result, а не array[a] - после прохождения цикла а будет равно 5:

System.out.println("Самое большое число: ");
result = a[0];
for (int a = 1; a < array.length; a++) {
   if (array[a] > result) {
    result = array[a];
   }
}
System.out.println(result);
System.out.println("Количество цифр в большом числе = " + 
String.valueOf(result).length());
result = a[0];
for (int d = 1; d < array.length; d++) {
if (array[d] < result) {
    result = array[d];
}
}
System.out.println("Самое короткое число = " + result);
System.out.println("Количество цифр в коротком числе = " + 
String.valueOf(result).length());
Answer 2

Устанавливайте значение переменной result непосредственно перед теми циклами, где она используется. А результат выводите после циклов

System.out.println("Самое большое число: ");
result = a[0];
for (int a = 1; a < array.length; a++) {
    if (array[a] > result) {
        result = array[a];
    }
}
System.out.println(array[a]);
System.out.println("Количество цифр в большом числе = " + String.valueOf(array[a]).length());
result = a[0];
for (int d = 1; d < array.length; d++) {
    if (array[d] < result) {
        result = array[d];
    }
}
System.out.println("Самое короткое число = " + array[d]);
System.out.println("Количество цифр в коротком числе = " + String.valueOf(array[d]).length());
READ ALSO
Прокрутка webView до определенного элемента

Прокрутка webView до определенного элемента

Приветствую! Пилю приложение для просмотра сайта в webView, появилась задача при открытии программно прокручивать страницу до определенного...

211
Встака знаков &lt;&gt; в текст element&#39;a из Java DOM

Встака знаков <> в текст element'a из Java DOM

При попытке вызвать setTextContent() со строкой, содержащей < или > в итоговый файл записывается &lt или &rtЧто делать, и как записать эти знаки...

199
Что нужно что бы развернуть проект на OpenShift?

Что нужно что бы развернуть проект на OpenShift?

Я залил проект в его стандартном состоянии, но на OpenShift выдало ошибкуМожет нужны какие-то дополнительные действия? На локальном сервере все...

150