数组中的 Java 最小值和最大值

Posted

技术标签:

【中文标题】数组中的 Java 最小值和最大值【英文标题】:Java Minimum and Maximum values in Array 【发布时间】:2013-09-02 17:52:05 【问题描述】:

我的代码没有给出错误,但是它没有显示最小值和最大值。代码是:

Scanner input = new Scanner(System.in);

int array[] = new int[10];

System.out.println("Enter the numbers now.");

for (int i = 0; i < array.length; i++) 
    int next = input.nextInt();
    // sentineil that will stop loop when 999 is entered
    if (next == 999) 
        break;
    
    array[i] = next;
    // get biggest number
    getMaxValue(array);
    // get smallest number
    getMinValue(array);


System.out.println("These are the numbers you have entered.");
printArray(array);


// getting the maximum value
public static int getMaxValue(int[] array) 
    int maxValue = array[0];
    for (int i = 1; i < array.length; i++) 
        if (array[i] > maxValue) 
            maxValue = array[i];
        
    
    return maxValue;


// getting the miniumum value
public static int getMinValue(int[] array) 
    int minValue = array[0];
    for (int i = 1; i < array.length; i++) 
        if (array[i] < minValue) 
            minValue = array[i];
        
    
    return minValue;


//this method prints the elements in an array......
//if this case is true, then that's enough to prove to you that the user input has  //been stored in an array!!!!!!!
public static void printArray(int arr[]) 
    int n = arr.length;

    for (int i = 0; i < n; i++) 
        System.out.print(arr[i] + " ");
    

我需要一个 system.out.println() 来显示它,还是应该返回工作?

【问题讨论】:

当然你必须打印数字。最好在你调用它的地方。并在 for 循环之外调用这两个方法。 【参考方案1】:
getMaxValue(array);
// get smallest number
getMinValue(array);

您正在调用方法,但没有使用返回值。

System.out.println(getMaxValue(array));
System.out.println(getMinValue(array)); 

【讨论】:

谢谢!正是我需要的!【参考方案2】:

你也可以试试这个,如果你不想按你的方法做的话。

    Arrays.sort(arr);
    System.out.println("Min value "+arr[0]);
    System.out.println("Max value "+arr[arr.length-1]);

【讨论】:

排序是O(n*log(n)),找到最小值/最大值是O(n)。 提取答案...非常简单。【参考方案3】:

恕我直言,最简单的解决方案之一是: -

//MIN NUMBER
Collections.sort(listOfNumbers);
listOfNumbers.get(0);

//MAX NUMBER
Collections.sort(listOfNumbers);
Collections.reverse(listOfNumbers);
listOfNumbers.get(0);

【讨论】:

Collections.reverse() 是不必要的,因为排序列表中的最后一个值是最大值。【参考方案4】:

这是在数组中查找最小值和最大值的工作代码。希望对您有所帮助:

 import java.util.Random;
 import java.util.Scanner;
 public class FindMin 
    public static void main(String[] args)
        System.out.println("Main Method Started");
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the size of the arr");
        int size = in.nextInt();
        System.out.println("Enter the maximum value of the arr");
        int max = in.nextInt();
        int [] arr  = initializeArr(max, size);
        print(arr);
        findMinMax(arr);
        System.out.println("Main Method Ended");
    
    public static void print(int[] arr)
        for(int val:arr)
            System.out.print(val + " ");
        
        System.out.println();
    
    public static int[] initializeArr(int max,int size)
        Random random = new Random();
        int [] arr = new int[size];
        for(int ii=0;ii<arr.length;ii++)
            arr[ii]=random.nextInt(max);
        
        return arr;
    
    public static void findMinMax(int[] arr)
        int min=arr[0];
        int max=arr[0];
        for(int ii=0;ii<arr.length;ii++)
            if(arr[ii]<min)
                min=arr[ii];
            
            else if(arr[ii]>max)
                max=arr[ii];
            
        
        System.out.println("The minimum in the arr::"+min);
        System.out.println("The maximum in the arr::"+max);
    

【讨论】:

冗长的方法可以在一行中完成。请找到最后的解决方案【参考方案5】:

你只是扔掉最小值/最大值:

  // get biggest number
  getMaxValue(array); // <- getMaxValue returns value, which is ignored
  // get smallest number
  getMinValue(array); // <- getMinValue returns value, which is ignored as well

你可以这样做

  ... 
  array[i] = next;

  System.out.print("Max value = ");
  System.out.println(getMaxValue(array)); // <- Print out getMaxValue value

  System.out.print("Min value = ");
  System.out.println(getMinValue(array)); // <- Print out getMinValue value

  ...  

【讨论】:

【参考方案6】:

你在这里犯了两个错误。 1.在数组初始化完成前调用getMaxValue(),getMinValue()方法。 2.不存储getMaxValue(),getMinValue()方法返回的返回值。 所以试试这段代码

   for (int i = 0 ; i < array.length; i++ ) 
  
       int next = input.nextInt();
       // sentineil that will stop loop when 999 is entered
       if (next == 999)
       break;
       array[i] = next;
  
  // get biggest number
  int maxValue = getMaxValue(array);
  System.out.println(maxValue );

  // get smallest number
  int minValue = getMinValue(array);
  System.out.println(minValue);

【讨论】:

【参考方案7】:

一行数组的求和、最大值和最小值

 public static void getMinMaxByArraysMethods(int[] givenArray)

       //Sum of Array in One Line 
       long sumofArray =  Arrays.stream(givenArray).sum();

       //get Minimum Value in an array in One Line
        int minimumValue = Arrays.stream(givenArray).min().getAsInt();

        //Get Maximum Value of an Array in One Line
        int MaxmumValue =  Arrays.stream(givenArray).max().getAsInt();

    

【讨论】:

【参考方案8】:

你的最大最小方法是对的

但您不会将 int 打印到控制台!

还有...也许更好的位置变化(最大、最小)方法

现在(最大,最小)循环中的方法。没必要..只需要一个电话

我建议更改此代码

    for (int i = 0 ; i < array.length; i++ ) 
       int next = input.nextInt();
       // sentineil that will stop loop when 999 is entered
       if (next == 999)
       break;
       array[i] = next;

System.out.println("max Value : " + getMaxValue(array));
System.out.println("min Value : " + getMinValue(array));
System.out.println("These are the numbers you have entered.");
printArray(array);

【讨论】:

【参考方案9】:

是的,您需要使用System.out.println。但是每次他们输入一个值时你都会得到最小值和最大值,如果它们提前中断,就不会跟踪元素的数量。

试试:

for (int i = 0 ; i < array.length; i++ ) 
       int next = input.nextInt();
       // sentineil that will stop loop when 999 is entered
       if (next == 999)
           break;

       array[i] = next;
 
 int length = i;
 // get biggest number
 int large = getMaxValue(array, length);
 // get smallest number
 int small = getMinValue(array, length);

 // actually print
 System.out.println( "Max: " + large + " Min: " + small );

然后您必须将长度传递给确定最小值和最大值并进行打印的方法。如果您不这样做,其余字段将为 0,并且可能会弄乱正确的最小值和最大值。

【讨论】:

【参考方案10】:

这里没有打印最大值和最小值。在 getMaxVal 和 getMin val 方法中或在调用之后打印最大值和最小值。这是输出。

Enter the numbers now.
5
Max: 5
Min: 0
3
Max: 5
Min: 0
7
Max: 7
Min: 0
3
Max: 7
Min: 0
90
Max: 90
Min: 0
43
Max: 90
Min: 0
100
Max: 100
Min: 0
45
Max: 100
Min: 0
23
Max: 100
Min: 0
22
Max: 100
Min: 3
These are the numbers you have entered.
5 3 7 3 90 43 100 45 23 22

此外,当您声明一个数组时,它最初全为 0。

【讨论】:

【参考方案11】:
import java.util.*;
class Maxmin

    public static void main(String args[])
    
        int[] arr = new int[10];
        Scanner in = new Scanner(System.in);
        int i, min=0, max=0;
        for(i=0; i<=arr.length; i++)
        
            System.out.print("Enter any number: ");
            arr[i] = in.nextInt();          
        
        min = arr[0];
        for(i=0; i<=9; i++)
        
            if(arr[i] > max)
            
                max = arr[i];
            
            if(arr[i] < min)
            
                min = arr[i];
            
        
        System.out.println("Maximum is: " + max);
        System.out.println("Minimum is: " + min);
    

【讨论】:

它不起作用,因为它给出了这个错误:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException【参考方案12】:

//在java中不排序查找数组中的最大值和最小值

import java.util.Scanner;
import java.util.*;
public class MaxMin_WoutSort 
 public static void main(String args[])
   
      int n,max=Integer.MIN_VALUE,min=Integer.MAX_VALUE;
      System.out.println("Enter the number of elements: ");
      Scanner sc = new Scanner(System.in);

      int[] arr = new int[sc.nextInt()]; //U can't say static or dynamic.
                                         //UnWrapping object sc to int value;sc.nextInt()
      System.out.println("Enter the elements: ");
      for(int i=0;i<arr.length;i++)      //Loop for entering values in array
      
          int next = sc.nextInt();
          arr[i] = next;
      
      for(int j=0;j<arr.length;j++)
     
          if(arr[j]>max)               //Maximum Condition
            max = arr[j];
          else if(arr[j]<min)         //Minimum Condition
              min = arr[j];
     
     System.out.println("Highest Value in array: " +max);
     System.out.println("Smallest Value in array: "+min);

 

【讨论】:

【参考方案13】:

我已经更新了您的相同代码,请将代码与您的原始代码进行比较:

public class Help 

public static void main(String args[])
    Scanner input = new Scanner(System.in);

    int array[] = new int[10];

    System.out.println("Enter the numbers now.");

    for (int i = 0; i < array.length; i++) 
        int next = input.nextInt();
        // sentineil that will stop loop when 999 is entered
        if (next == 999) 
            break;
        
        array[i] = next;
    

    System.out.println("These are the numbers you have entered.");
    printArray(array);

    // get biggest number
    System.out.println("Maximum: "+getMaxValue(array));
    // get smallest number
    System.out.println("Minimum: "+getMinValue(array));


// getting the maximum value
public static int getMaxValue(int[] array) 
    int maxValue = array[0];
    for (int i = 1; i < array.length; i++) 
        if (array[i] > maxValue) 
            maxValue = array[i];
        
    
    return maxValue;


// getting the miniumum value
public static int getMinValue(int[] array) 
    int minValue = array[0];
    for (int i = 1; i < array.length; i++) 
        if (array[i] < minValue) 
            minValue = array[i];
        
    
    return minValue;


//this method prints the elements in an array......
//if this case is true, then that's enough to prove to you that the user input has  //been stored in an array!!!!!!!
public static void printArray(int arr[]) 
    int n = arr.length;

    for (int i = 0; i < n; i++) 
        System.out.print(arr[i] + " ");
    


【讨论】:

以上是关于数组中的 Java 最小值和最大值的主要内容,如果未能解决你的问题,请参考以下文章

从Awk中的多维数组中的子数组获取最小值和最大值

获取数组列中的最小值和最大值

用java script 求数组的最大值最小值和平均数

从 p5.js 的 JSON 文件中的数组中查找最小值和最大值

Javascript:使用 reduce() 查找最小值和最大值?

Integer.MAX_VALUE和Integer.MIN_VALUE的解释,用于查找数组中的最小值和最大值