数组中的 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 最小值和最大值的主要内容,如果未能解决你的问题,请参考以下文章
从 p5.js 的 JSON 文件中的数组中查找最小值和最大值