Java - потоки (возвращающие элемент из массива)

может кто-нибудь сказать мне, почему поток возвращает 0 после запуска этого кода, а не максимальное значение из массива (массив должен быть как можно больше), как я могу это исправить?

import java.util.Arrays;

public class MyThread extends Thread {

    int[] arr = new int[1000000];

    public static int max(int[] numbers) {
        int maxValue = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] > maxValue) {
                maxValue = numbers[i];
            }
        }
        return maxValue;
    }

    public static int min(int[] numbers) {
        int minValue = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] < minValue) {
                minValue = numbers[i];
            }
        }
        return minValue;
    }

    @Override
    public void run() {
        int maxArr = max(Arrays.stream(arr).toArray());
        System.out.println(maxArr);
    }

    public static void main(String[] args) {
        MyThread Thread1 = new MyThread();
        Thread1.start();
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
32
3

Ответы 3

Ячейки вашего массива не инициализированы, поэтому все значения равны нулю. Напишите 666 в arr [0] и хорошего дня.

Ваш массив

int[] arr = new int[1000000];

- это массив, который заполненный нулями, потому что значение По умолчанию для int равно 0.

Вы должны присвоить некоторые значения элементам массива, в противном случае используются значения по умолчанию 0.

Вы передаете массив arr, который имеет только ноль для всего индекса, что означает, что вам необходимо инициализировать массив значениями, как показано ниже.

import java.util.Arrays;

class MyThread extends Thread {

int[] arr = new int[1000000];

public static int max(int[] numbers) {
    int maxValue = numbers[0];
    for (int i = 1; i < numbers.length; i++) {
        if (numbers[i] > maxValue) {
            maxValue = numbers[i];
        }
    }
    return maxValue;
}

public static int min(int[] numbers) {
    int minValue = numbers[0];
    for (int i = 1; i < numbers.length; i++) {
        if (numbers[i] < minValue) {
            minValue = numbers[i];
        }
    }
    return minValue;
}

@Override
public void run() {
    //initialise array with values
    for (int i = 0; i < arr.length; i++) {
        arr[i] = i;
    }
    int maxArr = max(Arrays.stream(arr).toArray());
    System.out.println(maxArr);
}

public static void main(String[] args) {
    MyThread Thread1 = new MyThread();
    Thread1.start();
}

}

Другие вопросы по теме

Как сохранить идентификаторы нажатых кнопок в массиве?
Как изменить массив внутри функции в C
Почему я не могу использовать указатели void внутри функции поиска?
Создайте массив строк, используя ввод строки файла, используя методы
Объекты недопустимы как дочерние объекты React (найдено: объект с ключами {}). Работа на локальном компьютере (браузер Chrome), но не в производственном и другом браузере
Почему при разыменовании указателя массива результирующее значение является указателем на первый элемент массива, а не на весь объект массива?
Суммировать массив javascript на основе отметки времени
Возникли проблемы с кодом, как повторно инициализировать плеер
Нужна помощь в создании массива случайно сгенерированных чисел в пределах диапазона и последующем отображении частоты каждого числа в этом диапазоне
Как прочитать файл, содержащий список целых чисел неизвестного размера