может кто-нибудь сказать мне, почему поток возвращает 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();
}
}




Ячейки вашего массива не инициализированы, поэтому все значения равны нулю. Напишите 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();
}
}