使用 JOptionPane [已关闭] 查找数组中的最高和最低数字



用于大学教育的代码 我需要用户插入数组的值并找到哪个数字是最高和最低,但最低数字不起作用. 谁能向我解释一下,抱歉问了这么多

int m=Integer.parseInt(JOptionPane.showInputDialog("Enter index"));       
int values;
int num [] = new int [m];
int max = num[0];
int min = num[0];
for (int i=0;i<num.length;i++)      
{                          
num[i] = values =Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
System.out.println(num[i]);
if (num[i] > max)
{
max=num[i];
}
if (num[i] < min )
{
min=num[i];
}
}                                    
System.out.println("Largest Number in a given array is : " + max);
System.out.println("Smallest Number in a given array is : " + min);

您可以使用Arrays.sort()对数组进行排序,只需访问将保存最小数字的第一个(0th(索引和将容纳最大数字的最后一个索引:

int m=Integer.parseInt(JOptionPane.showInputDialog("Enter index"));       
//int values; dont need this
int num [] = new int [m]; //num is initialised with length entered by the user
//int max = num[0]; no need
//int min = num[0]; no need
for (int i=0;i<num.length;i++)      
{                          
num[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
System.out.println(num[i]);      
}
Arrays.sort(num); //this will sort your array in ascending order: smallest number will be at the 0th index and largest will be at the last index                                    
System.out.println("Largest Number in a given array is : " + num[num.length-1]);
System.out.println("Smallest Number in a given array is : " + num[0]);

欢迎,

int[] num= new int[4];

初始化 num 后,num 将为 {0, 0, 0, 0};

int max = num[0];
int min = num[0];

所以现在 min 将是 0,因为 num[0] 是 0 - 无论你输入什么。

num[i] = values =Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
System.out.println(num[i]);
if(i == 0)
min = num[i];

试试这个并考虑一下(最大值相同(

代码中存在一些错误 - 因此,使用您的尝试,您可以在从用户收到第一个值将其设置为最小值和最大值,并从那里开始工作:

int m = Integer.parseInt(JOptionPane.showInputDialog("Enter index"));
int num[] = new int[m];
int max = Integer.parseInt(JOptionPane.showInputDialog("Enter value"));
System.out.println(max);
int min = max;
for (int i = 0; i < num.length - 1; i++) {
num[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter value"));
System.out.println(num[i]);
if (num[i] > max) {
max = num[i];
} else if (num[i] < min) {
min = num[i];
}
}
System.out.println("Largest Number in a given array is : " + max);
System.out.println("Smallest Number in a given array is : " + min);

5 个输入(3、8、6、4 和 -33(时,输出为:

给定数组中的最大数是:8

给定数组中的最小数是:-33


只是为了好玩,这里有一个效率非常低的替代解决方案:

System.out.println(Arrays.stream(num).boxed().mapToInt(Integer::intValue).max().getAsInt());
System.out.println(Arrays.stream(num).boxed().mapToInt(Integer::intValue).min().getAsInt());

或者当然,您可以使用 Arrays.sort(( 对数组进行排序,然后用array[array.length() - 1]找到最大值,用array[0]找到最小

您可以使用整数的Integer.MAX_VALUEInteger_MIN_VALUE.max值为 2147483647(2^31-1(,整数的最小值为 -2147483648(-2^31(

int m=Integer.parseInt(JOptionPane.showInputDialog("Enter index"));       
int num [] = new int [m];
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
for (int i=0;i<num.length;i++)      
{                          
num[i] = values =Integer.parseInt(JOptionPane.showInputDialog("Enter value"));   
System.out.println(num[i]);
if (num[i] > max)
{
max=num[i];
}
if (num[i] < min )
{
min=num[i];
}
}  

希望这对你有用。

最新更新