如何在数组中找到最大值和最小值

时间:2019-12-01 06:20:52

标签: java arrays for-loop

嗨,所以我是Java编程的新手,我目前正在学习数组。所以我想做的是找到数组的最大值和最小值,但是由于某种原因我找不到最小值,但是我可以找到最大值。

这是我的输出:

Enter the number of elements: 5                                                                                                               
Enter a number: 1                                                                                                                             
Enter a number: 2                                                                                                                             
Enter a number: 3                                                                                                                             
Enter a number: 4                                                                                                                             
Enter a number: 5                                                                                                                             
The maximum number is:5
The minimum number is: 0

我使用相同的语句通过仅更改运算符来获取最大值。但是输出总是为零。

这是我的代码:

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {



        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of elements: ");
        int elements = input.nextInt();

        int [] array = new int[elements];
        int max = array[0];
        int min = array[0];

        for(int i = 0; i<elements; i++){

            System.out.print("Enter a number: ");
            array[i] = input.nextInt();

            if(array[i]>max){
                max = array[i];

            }
            if(array[i]<min){
                min = array[i];
            }

        }

        System.out.print("The maximum number is:" + max);
        System.out.println();
        System.out.print("The minimum number is: " + min);






    }
}

任何帮助将不胜感激!

6 个答案:

答案 0 :(得分:4)

int min = array[0];

该语句在array[0]为零时执行。

此时您尚未读取任何值,因此请使用以下命令初始化最小值和最大值:

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;

实际上,您根本不需要该数组,因为在循环之后不需要使用它。只需将扫描器结果分配给在循环内声明的int变量即可。

答案 1 :(得分:1)

将最大值设置为最小值,将最小值设置为最大值

.env

答案 2 :(得分:0)

使用新运算符分配内存时,

int [] array = new int[elements];

数组的每个元素都初始化为零。

因此,当您执行int min=array[0]时,min被分配值为0。然后与1,2,3,4和5进行比较,min最小,因此不会改变。

要解决此问题, 首先使用for循环输入数组中的所有元素,然后将min和max初始化为array [0]

答案 3 :(得分:-1)

尝试

import java.util.Scanner;

    public class Main
    {
        public static void main(String[] args) {



            Scanner input = new Scanner(System.in);
            System.out.print("Enter the number of elements: ");
            int elements = input.nextInt();

            int [] array = new int[elements];


            for(int i = 0; i<elements; i++){

                System.out.print("Enter a number: ");
                array[i] = input.nextInt();
             }
            int max = array[0];
            int min = array[0];
            for(int i = 0; i<elements; i++){
                if(array[i]>max){
                    max = array[i];

                }
                if(array[i]<min){
                    min = array[i];
                }


           }

            System.out.print("The maximum number is:" + max);
            System.out.println();
            System.out.print("The minimum number is: " + min);






        }
    }

答案 4 :(得分:-1)

整数的默认初始值为0。 因此,在检查它是否大于输入值时,默认值保持不变

答案 5 :(得分:-1)

为什么首先需要一个数组?

Scanner console = new Scanner(System.in);
int entries = console.nextInt();
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for(int i = 0; i < entries; i++){
   int temp = console.nextInt();
   if(temp < min) {
        min = temp;
   }
   if (temp > max) {
        max = temp;
   }
}