我正在尝试编写一个代码,该代码将要求我已经完成的5个整数值。但是,现在我需要知道如何让我的程序输出5的最小值和最大值。我知道有可能使用if语句但是如果语句可能会有120种不同。我想知道是否有更简单的方法来找到最大值和最小值。
答案 0 :(得分:0)
将数字放入数组中,对数组进行排序,然后取第一个和最后一个元素。
答案 1 :(得分:0)
为什么你需要120种不同的if语句? 您已经获得了关于调用数学函数来完成工作的答案,我已经使用了一种简单的排序方法来完成工作。
您的问题的解决方案分为以下几种: 1)读取用户输入 2)排序 3)从排序的束中找出最大最小值
代码:
//Import relevant packages
import java.io.BufferedReader;
import java.io.InputStreamReader;
class MinMax {
public static void main(String[] args) {
int[] myArray = new int[5]; //Array to hold user input of 5 integers
int[] resultArray; //reference var to hold the resultArray object
//Buffered reader is wrapped around the input stream reader to read user input
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//Loop to get user input, 5 times
for (int i=1;i<=5;i++){
System.out.println("Enter a number: ");
try{
myArray[i-1] = Integer.parseInt(reader.readLine()); //String to integer the user input
}
catch(Exception e){
e.printStackTrace();
}
}
//Calling the function sortme() to do the sorting
resultArray = sortme(myArray);
//After bubble sort has sorted the input array, the min is the first and max is the last, values of the array
System.out.println("The min is: " + resultArray[0] + ", and the max is: "+myArray[4]);
}
//Bubble sort
static int[] sortme(int[] array){
int temp;
for (int i=(array.length-1);i>=0;i--){
for (int j=1;j<=i;j++){
if (array[j-1] > array[j]){
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
}
return array;
}
输入:
1 4 6 3 9
输出:
The min is: 1, and the max is: 9
修改强> Yetti先生指出了排序方法的低效率,因为它首先不需要。这是迭代方法:
import java.io.BufferedReader;
import java.io.InputStreamReader;
class MinMax_nosort {
public static void main(String[] args) {
int[] myArray = new int[5]; //Array to hold user input of 5 integers
//Buffered reader is wrapped around the input stream reader to read user input
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//Loop to get user input, 5 times
for (int i=1;i<=5;i++){
System.out.println("Enter a number: ");
try{
myArray[i-1] = Integer.parseInt(reader.readLine()); //String to integer the user input
}
catch(Exception e){
e.printStackTrace();
}
}
minmax(myArray);
}
static void minmax(int[] array){
int max, min;
max = min = array[0];
for (int i=1;i<array.length;i++){
if (array[i] > max)
max = array[i];
else if(array[i] < min)
min = array[i];
}
System.out.println("The min is:" + min + " and the max, is: " + max);
}
输入:
1 4 6 3 9
输出:
The min is:1 and the max, is: 9
答案 2 :(得分:-1)
int[] test = {1, 4, 2, 10, 5};
Arrays.sort(test);
System.out.println("Smallest:" + test[0] + " Largest:" + test[4]);
存储在数组中然后对数组进行排序。
答案 3 :(得分:-1)
将数字放入数组或集合中,初始化将存储min或max的变量(分别使用Integer.MAX_VALUE
或Integer.MIN_VALUE
),然后每次迭代数组/集合将当前元素与变量的值进行比较,并在必要时更新变量。
编辑:评论中要求的此解决方案的单行。
int max = Collections.max(Arrays.asList(number1, number2, number3, number4, number5));
min
相同。