java - 找出最大值和最小值以及它们在数组中出现的次数。找出最大值最先出现和最小值最后出现的位置
问题描述
编写一个 java 程序,找出最大值和最小值以及它们在 n 个元素的数组中出现的次数。找出最大值最先出现和最小值最后出现的位置。
我想知道在if
我正在写的声明中:
if(array[i] > Max)
{
Max = array[i];
Max_Count += 1;
Max_First_Occurrence = i;
}
为什么我得到错误结果,即使Max_Count
初始值为 0。我通过这样做得到正确的值:
if(array[i] > Max)
{
Max = array[i];
Max_Count = 1;
Max_First_Occurrence = i;
}
最低限度也一样。
这是我尝试过的:
import java.util.Arrays;
import java.util.Scanner;
public class A8HW1{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter array length: ");
int size = sc.nextInt();
int [] array = new int[size];
for(int i = 0; i < size; i++)
array[i] = (int) (Math.random() * ((100 - 0) + 1)) + 0;
System.out.println( "\n" +Arrays.toString(array));
Max_Or_Min(array);
}
public static void Max_Or_Min(int [] array)
{
if(array.length == 1)
{
System.out.println("Minimum = " + array[0]);
System.out.println("Maximum = " + array[0]);
}
else
{
int Max = Integer.MIN_VALUE , Min = Integer.MAX_VALUE , Max_Count = 0, Min_Count = 0,
Max_First_Occurrence = -1 , Min_Last_Occurrence = -1;
for(int i = 0; i < array.length; i++)
{
if(array[i] > Max)
{
Max = array[i];
Max_Count += 1;
Max_First_Occurrence = i;
}
else if(array[i] == Max)
{
Max_Count += 1;
}
if(array[i] < Min)
{
Min = array[i];
Min_Count += 1;
Min_Last_Occurrence = i;
}
else if(array[i] == Min)
{
Min_Count += 1;
Min_Last_Occurrence = i;
}
}
System.out.println("\nMaximum = " + Max);
System.out.println("Minimum = " + Min);
String x = (Max_Count > 1) ? "times." : "time.";
System.out.println("\nMaximum Occurred = " + Max_Count + " " + x);
String y = (Min_Count > 1) ? "times." : "time.";
System.out.println("Minimum Occurred = " + Min_Count + " " + y);
System.out.println("\nFirst Maximum Occured on position = " + (Max_First_Occurrence + 1));
System.out.println("Last Minimum Occured on position = " + (Min_Last_Occurrence + 1));
}
}
}
解决方案
In your answer you you loop twice in your array. You can actually avoid that.
Here I have re-wrote your Max_Or_Min
method. Please also note you no longer need Occurrence
method as well.
public static void Max_Or_Min(int [] array) {
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int min_count = 1;
int max_count = 1;
int max_first_occurs = -1;
int min_last_occurs = -1;
for (int i = 0; i < array.length; i++) {
int x = array[i];
if (x > max) { max = x; max_count = 1; max_first_occurs = i; }
else if (x == max) { max_count++; }
if (x < min) { min = x; min_count = 1; min_last_occurs = i; }
else if (x == min) { min_count++; min_last_occurs = i; }
}
System.out.println("Max: " + max);
System.out.println("Min: " + min);
System.out.println("Max count: " + max_count);
System.out.println("Min count: " + min_count);
System.out.println("Max first occurs at: " + max_first_occurs);
System.out.println("Min last occurs at: " + min_last_occurs);
}
Note: max_first_occurs
and min_last_occurs
integers are represent the index in the array which starts with 0
推荐阅读
- authorization - Apache Nifi:无法找到初始管理员来播种策略
- php - 在字符串中解码“=C3=A4”
- javascript - 如何使用 VBA 在提示“选择上传文件”时上传文件
- php - php比较值是否大于
- javascript - 在更改选项的选定属性后强制选择刷新
- python - 在 Docker 容器中调试 Python
- umbraco7 - ContentTypeService 找不到别名为“homePage”的内容类型
- arrays - 如何解压 pyspark WrappedArray
- javascript - 整数输入的 JavaScript 提示验证
- moodle - 如何将自定义元字段添加到 Moodle 课程元素?