#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));
}
}
}
Ответ №1:
В своем ответе вы дважды повторяете цикл в своем массиве. Вы действительно можете этого избежать.
Здесь я переписал ваш Max_Or_Min
метод. Пожалуйста, также обратите внимание, что вам больше не нужен Occurrence
метод.
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);
}
Примечание: max_first_occurs
и min_last_occurs
целые числа представляют индекс в массиве, который начинается с 0
Комментарии:
1. Зачем использовать расширенный цикл для каждого, когда вам нужно значение индекса? Мне потребовалась пара минут, чтобы понять, что я делаю. Ваш код кажется немного запутанным для новичка.
2. @GilbertLeBlanc Я обновил свой ответ. Спасибо за вашу проницательность!
3. @Aadav рад вам помочь! Если это решило ваш вопрос, пожалуйста, примите это как ответ. Ура!