有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

forloop中的Java数组最小元素

好的,我已经做了很长时间了。我在堆栈溢出中处理过类似的问题,但仍然无法使其正常工作。我需要找到数组中的最大值和最小值。试图找到最小值是个问题。从编写单独的方法等方面,我已经尝试了各种方法,但仍然在0中输出。以下是我尝试过的:

import java.util.Scanner;

class ArrayMin {

  public static void main(String args[]) {
    @SuppressWarnings("resource")
    Scanner scanner = new Scanner(System.in);

    int a[] = new int[10];
    int max = a[0];
    int min = a[0];

    System.out.println("Enter elements of array :");
    for (int i = 0; i < 10; i++) {
      a[i] = scanner.nextInt();
      if (i == 9)
        break;
    }

    for (int i = 1; i < a.length; i++) {

      if (a[i] > max)
        max = a[i];

      else if (a[i] < min)
        min = a[i];

    }

    System.out.println("Result is max is :" + (max)); //if I input 1-10, output is 10
    System.out.println("Result is min is :" + (min)); //whatever number I input the output is always 0
  }
}

共 (2) 个答案

  1. # 1 楼答案

    替换这个

       int max = Integer.MIN_VALUE;
       int min = Integer.MAX_VALUE;
    ...
        for (int i = 0; i < a.length; i++) {
    
          if (a[i] > max)
            max = a[i];
    
          if (a[i] < min)
            min = a[i];
    
        }
    ...
    
  2. # 2 楼答案

    声明数组时,它将初始化为全零。然后将min分配给第一个元素,即零。大概所有值都是>;=一旦它们被赋值,那么min仍然是零,但是max是正确的

    在为数组分配输入值的max循环之后建立min

    for (int i = 0; i < 10; i++) {
      a[i] = scanner.nextInt();
      if (i == 9)
        break;
    }
    // Moved HERE.
    int max = a[0];
    int min = a[0];