簡體   English   中英

將用戶輸入多次存儲在數組中

[英]Store user input in array multiple times

我正在做一個項目...

允許用戶輸入4個數字,然后將其存儲在數組中以備后用。 我還希望每次用戶決定繼續執行該程序時,它都會創建一個新的數組,可以將其與以后進行比較以獲得最高的平均值,最高值和最低值。

代碼沒有完成,我知道有些事情仍然需要做一些工作。 我只是提供了完整的代碼以供參考。

我只是在數組部分尋找方向。

*我相信我應該使用2-D數組,但是我對從哪里開始感到困惑。 如果需要更多說明,請告訴我。 (以防萬一,我在代碼中包含了許多注釋。)

我嘗試轉換inputDigit(); 接受二維數組但無法弄清楚的方法。

如果之前已經回答了這個問題,請重定向到相應的鏈接。

謝謝!

package littleproject;

import java.util.InputMismatchException;
import java.util.Scanner;

public class littleProject {

public static void main(String[] args) {
    // Scanner designed to take user input
    Scanner input = new Scanner(System.in);
    // yesOrNo String keeps while loop running
    String yesOrNo = "y";
    while (yesOrNo.equalsIgnoreCase("y")) {

        double[][] arrayStorage = inputDigit(input, "Enter a number: ");

        System.out.println();

        displayCurrentCycle();
        System.out.println();

        yesOrNo = askToContinue(input);
        System.out.println();

        displayAll();
        System.out.println();

            if (yesOrNo.equalsIgnoreCase("y") || yesOrNo.equalsIgnoreCase("n")) {
                System.out.println("You have exited the program."
                    + " \nThank you for your time.");
            }
        }
    }

// This method gets doubles and stores then in a 4 spaced array
public static double[][] inputDigit(Scanner input, String prompt) {
    // Creates a 4 spaced array
    double array[][] = new double[arrayNum][4];

    for (int counterWhole = 0; counterWhole < array.length; counterWhole++){
        // For loop that stores each input by user
        for (int counter = 0; counter < array.length; counter++) {
            System.out.print(prompt);

            // Try/catch that executes max and min restriction and catches
            // a InputMismatchException while returning the array
            try {
                array[counter] = input.nextDouble();
                if (array[counter] <= 1000){
                    System.out.println("Next...");
                } else if (array[counter] >= -100){
                    System.out.println("Next...");
                } else {
                    System.out.println("Error!\nEnter a number greater or equal to -100 and"
                            + "less or equal to 1000.");
                }
            } catch (InputMismatchException e){
                System.out.println("Error! Please enter a digit.");
                counter--; // This is designed to backup the counter so the correct variable can be input into the array
                input.next();
            }
        }
    }
return array;
}

// This will display the current cycle of numbers and format all the data
// and display it appropriatly
public static void displayCurrentCycle() {
    int averageValue = 23; // Filler Variables to make sure code was printing
    int highestValue = 23;
    int lowestValue = 23;
    System.out.println(\n--------------------------------"
            + "\nAverage - " + averageValue 
            + "\nHighest - " + highestValue
            + "\nLowest - " + lowestValue);
}

public static void displayAll() {
    int fullAverageValue = 12; // Filler Variables to make sure code was printing
    int fullHighestValue = 12;
    int fullLowestValue = 12;
    System.out.println(" RESULTS FOR ALL NUMBER CYCLES"
            + "\n--------------------------------"
            + "\nAverage Value - " + fullAverageValue
            + "\nHighest Value - " + fullHighestValue
            + "\nLowest Value - " + fullLowestValue);
}

// This is a basic askToContinue question for the user to decide
public static String askToContinue(Scanner input) {
    boolean loop = true;
    String choice;
    System.out.print("Continue? (y/n): ");
    do {
        choice = input.next();
        if (choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("n")) {
            System.out.println();
            System.out.println("Final results are listed below.");
            loop = false;
        } else {
            System.out.print("Please type 'Y' or 'N': ");
        }
    } while (loop);
    return choice;
}
}

據了解,您的程序要求用戶輸入四個數字。 此過程可能會重復,您想訪問所有輸入的號碼。 您只是在問如何存儲這些內容。

我會將每組輸入的數字存儲為大小為4的數組。
然后將這些數組中的每一個添加到一個數組列表中。

與二維數組相比,數組列表提供了動態添加新數組的靈活性。

我們將用戶輸入的數字存儲在大小為4的數組中:

public double[] askForFourDigits() {
    double[] userInput = new double[4];
    for (int i = 0; i < userInput.length; i++) {
        userInput[i] = /* ask the user for a digit*/;
    }
    return userInput;
}

您將所有這些數組都添加到一個數組列表中:

public static void main(String[] args) {
    // We will add all user inputs (repesented as array of size 4) to this list.
    List<double[]> allNumbers = new ArrayList<>();

    do {
        double[] numbers = askForFourDigits();
        allNumbers.add(numbers);

        displayCurrentCycle(numbers);
        displayAll(allNumbers);
    } while(/* hey user, do you want to continue */);
}

現在,您可以使用該列表來計算所有周期中輸入的數字的統計信息:

public static void displayAll(List<double[]> allNumbers) {
    int maximum = 0;
    for (double[] numbers : allNumbers) {
        for (double number : numbers) {
            maximum = Math.max(maximum, number);
        }
    }
    System.out.println("The greatest ever entered number is " + maximum);
}

暫無
暫無

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

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