簡體   English   中英

如何在用戶輸入的數組中找到最小的元素? 為什么最小元素顯示為零?

[英]How to find the smallest element in an user inputted array? Why the smallest element is displayed zero?

該代碼顯示總和、平均值和最大元素。 它不顯示最小元素,因為輸出始終為零。 如何顯示數組中的最小元素?

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);
        }
}

是的,這是因為默認情況下您的字段 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.

您缺少什么,您需要在 for 循環的第一次迭代中將值分配給 small,例如:

       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];
            }
        }

現在你的程序應該可以工作了:)

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); } }

如果你使用java 8或更高版本,你可以使用Arrays的stream方法。 它簡化了數組的工作。 欲了解更多信息

首先將數組import java.util.Arrays;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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM