为什么我得不到数组 JAVA 中的最小值?

Why am I not getting the minimum value in an array JAVA?

import java.util.*;
public static void main(String[] args) {
    
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter the size ??");
    int n = sc.nextInt();
    int[] marks = new int[n + 1];
    
    for (int i = 0; i < n; i++) {
        System.out.println("Enter " + i + " number ??");
        marks[i] = sc.nextInt();
    }
    
    System.out.println("The  following numbers are : ");
    for (int j = 0; j < marks.length - 1; j++) {
        System.out.println(marks[j] + " ");
    }
    
    int max = marks[0];
    int min = marks[0];
    int s = marks.length;
    for (int i = 0; i < s; i++) {
        if (marks[i] > max) {
            max = marks[i];
        }
        if (marks[i] < min) {
            min = marks[i];
        }
    }
    
    System.out.println("Max is " + max + " Min is " + min);
}

输出:

Enter the size ??2
Enter 0 number ??
56
Enter 1 number ??
56
The  following numbers are : 
56 
56 
Max is 56 Min is 0

上例中标记数组的大小为3

 int[] marks = new int[n + 1];

令总分数为 (n) : 2

我们正在创建大小为 3 的数组。

java 中 int 基元的默认值为 0

标记数组创建时大小为 3

{56, 56, 0}

按照逻辑,这三个元素中的最小值是0

您好,欢迎来到 Whosebug。下次再上网求助,试试这个方法吧。它会更快地解决您的问题。

for (int i = 0; i < s; i++) {
    System.out.println("DEBUG: number in index " + i + " is " + marks[i]);

    if (marks[i] > max) {
        System.out.println("DEBUG: number is greater than current max " + max);

        max = marks[i];
    }
    if (marks[i] < min) {
        System.out.println("DEBUG: number is smaller than current min " + min);

        min = marks[i];
    }
}

这个过程称为“调试”。这可以通过像上面那样添加虚假的日志记录量或使用调试器单步执行代码来完成。