0

私は Java の完全な初心者であり、コードで非常に興味深い問題が発生しています。オブジェクトは、配列内に 20 個の乱数のリストを作成し、この配列を表示して、配列内のデータに基づいて一連の計算を実行することです。これは 6 つの方法で達成する必要があります。最後の方法を除いて、すべてうまくいくようです。配列内の最小数を取得することを意図していますが、何らかの理由で 0 しか出力していません。奇妙なのは、配列内の最大数を収集する上記の方法で完全に正常に機能することです。

私はそれをトラブルシューティングして、null 値を持つ配列からのものであるかどうかを確認しようとしましたが、最高の方法がうまく機能しているように見えるため、これはおそらくありません。lowerList は一番下にあります。

助けてくれてありがとう、このグリーンホーンに感謝します。また、他に素晴らしいコメントがあれば、私は批判を受け付けています!

import java.util.Random;

public class Program7 {

    public static void main(String[] args) {

        final int listSize = 20;    // List size
        double total = 0;           // Total
        int[] ranList = new int[listSize];  // Array with random numbers
        int highest = ranList[0];   // Highest variable
        int lowest = ranList[0];    // Lowest Variable

        randomNumberList(ranList);          // Calls randomNumberList method
        displayList(ranList);               // Calls displayList method
        total = totalList(total, ranList);  // Calls totalList method
        double averageList = listAverage(total, ranList);   // Calls averageList method
        highest = listHighest(ranList, highest);    // Calls listHighest method
        lowest = lowestList(ranList, lowest);   // Calls lowestList method

        // On screen output
        System.out.println("\nHere's the total: " + total);
        System.out.println("Here's the average: " + averageList);
        System.out.println("Here's the highest number in the list: " + highest);
        System.out.println("Here's the lowest number in the list: " + lowest);

    }

    /**
     * Generates a random list
     *
     * @param ranList
     */
    public static void randomNumberList(int[] ranList) {
        for (int i = 0; i < ranList.length; i++) {
            Random generator = new Random();
            int ranNum = generator.nextInt(100) + 1;
            ranList[i] = ranNum;
        }
    }

    /**
     * Displays list
     *
     * @param ranList
     */
    public static void displayList(int[] ranList) {
        System.out.println("Here is your random list: ");
        for (int i = 0; i < ranList.length; i++) {
            System.out.print(ranList[i] + " ");
        }
    }

    /**
     * Adds elements in list
     *
     * @param total
     * @param ranList
     * @return returns total of list added together
     */
    public static double totalList(double total, int[] ranList) {
        for (int i = 0; i < ranList.length; i++) {
            total += ranList[i];
        }
        return total;
    }

    /**
     * Finds average by dividing the total with the ranList.length
     *
     * @param total
     * @param ranList
     * @return result of the averaging
     */
    public static double listAverage(double total, int[] ranList) {
        double averageList = total / ranList.length;
        return averageList;
    }

    /**
     * Steps through array via loop and finds highest value
     *
     * @param ranList
     * @param highest
     * @return the highest value
     */
    public static int listHighest(int[] ranList, int highest) {
        for (int i = 0; i < ranList.length; i++) {
            if (ranList[i] > highest) {
                highest = ranList[i];
            }
        }
        return highest;
    }

    /**
     * Steps through array via loop and finds lowest value
     *
     * @param ranList
     * @param lowest
     * @return the lowest value
     */
    public static int lowestList(int[] ranList, int lowest) {
        for (int i = 0; i < ranList.length; i++) {
            if (ranList[i] < lowest) {
                lowest = ranList[i];
            }
        }
        return lowest;
    }
}
4

3 に答える 3

1

メソッドに渡す前に、lowest を 0 に設定しています。

int[] ranList = new int[listSize];  // Array with random numbers (not yet, right now this is an array of all 0)
int highest = ranList[0];   // Highest variable (not really, this is 0)
int lowest = ranList[0];    // Since you didn't put anything in ranList, lowest is now 0

最高の関数の場合、乱数は常に 0 より大きいため、これは正常に機能します。

実際、ここでの根本的な原因は、これらのメソッドに何も渡してはならないということです。これらのメソッドは何もしていないからです。

public static int lowestList(int[] ranList) {
    int lowest = Integer.MAX_VALUE;
    for (int i = 0; i < ranList.length; i++){
        if (ranList[i] < lowest){
            lowest = ranList[i];
        }
    }
    return lowest;
}
于 2013-03-07T19:55:33.750 に答える
0

ランダム配列を作成した後、最高値と最低値を初期化する必要があります。どちらも0から始まります。

于 2013-03-07T19:54:14.283 に答える
0

入れてみてください

lowest = ranList[0];

リストを生成した後、つまり呼び出した後

randomNumberList(ranList);
于 2013-03-07T19:57:47.573 に答える