Я новичок в Java. Я создал класс и метод, которые должны возвращать минимальное число в массиве. Но я не могу понять, почему он не работает.
Ниже приведен код.
package array;
import java.util.Scanner;
class Value {
public static int minValue(int[] arr) {
for(int e : arr) {
if (arr[0] > e) {
arr[0] = e;
}
}
return arr[0];
}
}
public class ArrayTest {
public static void main(String[] args) {
int[] arr = new int[5];
System.out.print("Input Number : ");
Scanner sc = new Scanner(System.in);
for(int e : arr) {
e = sc.nextInt();
}
System.out.println("min : " + Value.minValue(arr));
}
Результат: «мин: 0». В чем проблема с моим кодом ???
Посмотрите на это: stackoverflow.com/questions/18169703/…. Вы должны использовать нормальную версию для каждой версии, а не для каждой версии для заполнения вашего массива.
Спасибо всем. Теперь я знаю причину. : D




я думаю это может тебе помочь
public static int minValue(int[] arr) {
int min = Integer.MAX_VALUE;
for(int e : arr) {
if (e < min) {
min = e;
}
}
return min;
}
а также изменить это
for(int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
В методе minValue не было ничего плохого.
если этот метод используется, он изменит исходный массив с индексом 0
Хорошо, позвольте мне попробовать и запустить его. Вы создаете массив целых чисел с длиной индекса 5, запрашиваете у пользователя 5 чисел, добавляете эти числа в массив arr по мере их ввода пользователем. Я вижу это в цикле for
for(int e : arr) {
e = sc.nextInt();
}
e назначается пользовательский ввод, но он не передает его в массив arr. Похоже, вам нужно добавить оператор для передачи / добавления пользовательского ввода в массив.
Я бы использовал такой цикл for; for (int i = 0; i <arr.length (); i ++) {arr [i] = sc.nextInt ();}
Чтобы сохранить свой код с for для каждого цикла, вы просто замените e на arr [e]
вам нужно изменить только метод ввода, ничего больше, Я добавил правильный, вы можете использовать это.
int i = 0;
for (int e: arr) {
arr[i] = sc.nextInt();
i++;
}
e = sc.nextInt();Вы никогда не добавляетеeв массив.