#java #arrays #element
#java #массивы #элемент
Вопрос:
Код отображает сумму, среднее значение и наибольший элемент. Он не отображает наименьший элемент, поскольку выходные данные всегда равны нулю. Как мне отобразить наименьший элемент в массиве?
import java.util.Scanner;
public class Average {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the number of elements:");
int length = input.nextInt();
int[] num = new int[length];
System.out.println("Enter the " length " array elements:");
int sum = 0;
int large,small;
large =small = num[0];
for (int i=0; i<length;i ) {
num[i] = input.nextInt();
sum = sum num[i];
}
for (int i=0; i<length; i) {
if (num[i]<small) {
small = num[i];
}
if(num[i]> large) {
large = num[i];
}
}
double avg = sum/length;
System.out.println("The sum is " sum);
System.out.println("The average is " avg);
System.out.println("The smallest element is " small);
System.out.println("The largest element is " large);
}
}
Комментарии:
1. инициализацию
large =small = num[0];
следует выполнять после того, как пользователь ввел значения массива, а не до
Ответ №1:
import java.util.Scanner;
class Average {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the number of elements:");
int length = input.nextInt();
int[] num = new int[length];
System.out.println("Enter the " length " array elements:");
int sum = 0;
int large, small;
for (int i = 0; i < length; i ) {
num[i] = input.nextInt();
sum = sum num[i];
}
large = small = num[0]; // small should be assigned after num is input
for (int i = 0; i < length; i) {
if (num[i] < small) {
small = num[i];
}
if (num[i] > large) {
large = num[i];
}
}
double avg = sum / length;
System.out.println("The sum is " sum);
System.out.println("The average is " avg);
System.out.println("The smallest element is " small);
System.out.println("The largest element is " large);
}
}
Ответ №2:
Да, это происходит потому, что по умолчанию ваше поле small равно 0.
А теперь давайте шаг за шагом рассмотрим ваш оператор if
if (num[i]<small) {
small = num[i];
}
пример для чисел: 22,11,6,
So first step is num[0] < 0, why 0 as mention before small = 0 by default
Step two num[1] < 0, small stills stay 0
Step Three num[2] < 0, small stills stay 0.
Чего вам не хватает, вам нужно присвоить значение small на первой итерации вашего цикла for, например:
for (int i=0; i<length; i) {
if(i == 0){
small = num[i];
}
if (num[i]<small) {
small = num[i];
}
if(num[i]> large) {
large = num[i];
}
}
Теперь ваша программа должна работать 🙂
Ответ №3:
если вы используете java 8 или выше, вы можете использовать метод потоков массивов. это упрощает работу с массивами. для получения дополнительной информации
сначала импортируйте массивы как import java.util.Arrays;
System.out.println("The sum is " Arrays.stream(num).sum());
System.out.println("The average is " Arrays.stream(num).average());
System.out.println("The smallest element is " Arrays.stream(num).min());
System.out.println("The largest element is " Arrays.stream(num).max());