【问题标题】:Java Minimum and Maximum values in Array数组中的 Java 最小值和最大值
【发布时间】: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 循环之外调用这两个方法。

标签: java arrays max minimum


【解决方案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] + " ");
                    }
                }
                }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2015-03-08
                  • 1970-01-01
                  • 2013-12-06
                  • 2017-03-16
                  • 2016-11-12
                  • 1970-01-01
                  • 2022-12-02
                  • 2013-02-25
                  相关资源
                  最近更新 更多