如何在数组中查找最小最大值 - 扫描仪类

问题描述 投票:0回答:5

我试图接受用户输入,将值存储在数组中,然后找到最小最大值。如果数组是用值初始化的,我的代码可以正常工作,但是当我接受用户输入时,它总是返回 0 作为最小值。看代码:

import java.util.Arrays;
import java.util.Scanner;

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

    Scanner scan = new Scanner(System.in);
    System.out.print("How many numbers in a set: ");
    int number = scan.nextInt();
    int[] myArray = new int[number];
    int min = myArray[0];
    int max = myArray[0];
    
        
    System.out.println("Input your numbers: ");
    for(int i = 0; i <= myArray.length-1; i++) {
        myArray[i] = scan.nextInt();
        if (myArray[i] < min) {
            min = myArray[i];
        } else if (myArray[i] > max) {
        max = myArray[i];
        }
    }
        System.out.println(Arrays.toString(myArray));
        System.out.println(max + " " + min);
        System.out.println();
    }
}

作为初学者,我很感激您查看上面的代码和提示

java arrays loops
5个回答
1
投票

当你这样做时

int[] myArray = new int[number];
int min = myArray[0];
int max = myArray[0];

将 min 和 max 设置为 0,然后在 for 循环中检查它是否小于 0。 如果您只为程序提供正数,则最小值将保持为 0 如果你想找到数组的最小值和最大值,你可以像这样初始化最小值和最大值:

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

0
投票
public static void main(String... args) {           
    Scanner scan = new Scanner(System.in);          
    System.out.print("How many numbers in a set: ");
    
    int[] arr = new int[scan.nextInt()];                                                            
    int min = Integer.MAX_VALUE;                    
    int max = Integer.MIN_VALUE;                    
                                                    
    System.out.print("Input your numbers: ");       
                                                    
    for (int i = 0; i < arr.length; i++) {          
        arr[i] = scan.nextInt();                    
        min = Math.min(min, arr[i]);                
        max = Math.max(max, arr[i]);                
    }                                               
                                                    
    System.out.println(Arrays.toString(arr));       
    System.out.println(max + " " + min);            
    System.out.println();                           
}                                                   

0
投票

您的代码默认将 min 初始化为 0,它比我们在数组中给出的大多数数字都小

int min = Integer.MAX_VALUE; //maximum value Integer datatype can hold
int max = Integer.MIN_VALUE;// minimum value Integer datatype can hold

这里我们将 min 设为可能的最高数字,将 max 设为可能的最低数字,这使得代码模式也能防弹到 -ve 值! 要了解有关 Integer.MAX_VALUE 和 Integer.MIN_VALUE 的更多信息,请点击以下链接:https://www.geeksforgeeks.org/integer-max_value-and-integer-min_value-in-java-with-examples/


0
投票

首先

int[] myArray = new int[number];
初始化数组大小。因此,如果您输入示例 4(在本例中为
[number]
),您将创建一个数组
myArray[] = {0, 0, 0, 0};


0
投票
package javase.Arrays;

import java.util.Arrays;
import java.util.Scanner;

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

    Scanner scan = new Scanner(System.in);
    System.out.print("How many numbers in a set: ");
    int number = scan.nextInt();
    int[] myArray = new int[number];
    int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;     
    
        
    System.out.println("Input your numbers: ");
    for (int i = 0; i < myArray.length; i++) {          
        myArray[i] = scan.nextInt();                    
        min = Math.min(min, myArray[i]);                
        max = Math.max(max, myArray[i]);  
    }
        System.out.println(Arrays.toString(myArray));
        System.out.println("Max : "+max + " " +"Min : " +min);
        System.out.println();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.