簡體   English   中英

驗證用戶輸入的Java

[英]validation for user's input Java

Java新手,請幫忙。 需要驗證以不接受負數。 創建2D數組以顯示分區和四分之一,用戶提示輸入數據-必須為非負數,然后將按分區/四分之一顯示數據,如果為負數,則提示用戶重新輸入。 驗證不起作用,請問在哪里驗證,我也應該在Main方法中調用它嗎? 到目前為止,我的代碼...

//2D array to hold numbers of divisions and quarters
double [][] companyInfo; 


/**Method displays company info
@param company info.
*/

public static void enterSalesFigures(double [][] companyInfo)
{
    Scanner scanner = new Scanner(System.in); //Create a scanner object

    /*Validation for user's input
    while (companyInfo [divisionIndex][divisionIndex] < 0) 
    {
     System.out.println("Please enter the number that is more than or equal to one.");
     companyInfo [divisionIndex][divisionIndex] = scanner.nextDouble();
    }*/ 

        for(int divisionIndex = 0; divisionIndex < companyInfo.length; divisionIndex++)
        {
        for(int quarterIndex = 0; quarterIndex < companyInfo[0].length; quarterIndex++)
        {
            System.out.printf("Division %d, Quarter %d   ", divisionIndex + 1, quarterIndex + 1);
                    companyInfo [divisionIndex][divisionIndex] = scanner.nextDouble();
        }
        System.out.println();
    }
}


public static void listSalesFigures(double [][] companyInfo)
{
    double difference;//to hold difference value

    for(int divisionIndex = 0; divisionIndex < companyInfo.length; divisionIndex++)
    {
        difference = 0;

        System.out.printf("|Division %d|\n", divisionIndex +1);

        for(int quarterIndex = 0; quarterIndex < companyInfo[0].length; quarterIndex++)
            {
                if(quarterIndex >= 1)
                {
                    difference = companyInfo[divisionIndex][quarterIndex] - companyInfo[divisionIndex][quarterIndex - 1];
                }
            System.out.printf("|Quarter %d|: $%,.2f,\t\t |Difference To Previous Quarter|:( $%,.2f ).\n", 
                    quarterIndex + 1, companyInfo[divisionIndex][quarterIndex], difference);            
        }
    }
public static double [] calculateTotalQuarterlySales(double [][] companyInfo, int numberOfQuarters)
{
    double totalQuarterlySales; //total to accumulate sales for all quarters
    double[] totalQtSalesArray = new double[numberOfQuarters]; //array that will hold total for each quarter
    double difference = 0;
    System.out.println();

    for(int quarterIndex = 0; quarterIndex < companyInfo[0].length; quarterIndex++)
        {
        totalQuarterlySales = 0;

        for(int divisionIndex = 0; divisionIndex < companyInfo.length; divisionIndex++)
        {
            totalQuarterlySales += companyInfo[divisionIndex][quarterIndex];
        //totalQuarterlySales will increase by companyInfo
        }

        totalQtSalesArray [quarterIndex] = totalQuarterlySales;
        //check condition and calculate each division’s increase or decrease from 
        //the previous quarter starting with 
        if(quarterIndex >= 1)
        {
            difference = totalQtSalesArray[quarterIndex] - totalQtSalesArray[quarterIndex - 1];
        }

        System.out.printf("Total Sales Per Quarter |Quarter %d| $%,.2f,\t  |Difference To Previous Quarter|( $%.2f ).\n", 
                quarterIndex + 1, totalQtSalesArray[quarterIndex], difference);
    }
    //@return 
        return totalQtSalesArray;
        //reference variable that stores totalQtSalesArray array
}

//@param method To calculate the average sales for all divisions that quarter
public static void calculeQtSalesAverage(double [] totalQtSales, int numberOfDivisions) 
{
    System.out.println();
    for(int quarterlySalesIndex = 0; quarterlySalesIndex < totalQtSales.length; quarterlySalesIndex ++)
    {
        System.out.printf("Average Sales For \t|Quarter %d| $%,.2f.\n", quarterlySalesIndex + 1, 
                totalQtSales [quarterlySalesIndex] / numberOfDivisions);
    }
}

public static void showHighestSales(double [][] companyInfo)
{
    //hold highest sales value
    double highestSales;

    //hold highest sales value for a division
    int highestSalesDivisionIndex;

    for(int quarterIndex = 0; quarterIndex < companyInfo[0].length; quarterIndex++)
    {
        highestSales = 0;
        highestSalesDivisionIndex = 0;

        System.out.println();

        for(int divisionIndex = 0; divisionIndex < companyInfo.length; divisionIndex++)
        {
            //check condition for any quarterly sales for any division to be 
            if(companyInfo[divisionIndex][quarterIndex] > highestSales)
            {
                highestSales = companyInfo[divisionIndex][quarterIndex];
                highestSalesDivisionIndex = divisionIndex + 1;
            }
        }
        //display division with the highest sales for that quarter
        System.out.printf("In Quarter %d Division %d had the highest sales in the amount of:\t $%,.2f.\n",
                quarterIndex + 1, highestSalesDivisionIndex + 1, highestSales);
    }
}

public static void main(String[] args) 
{
    int numberOfDivisions = 6; //hold number of divisions
    int numberOfQuarters = 4; //hold number of quarters

    double [] totalQtSales;

    double [][] companyInfo = new double [numberOfDivisions][numberOfQuarters];

    enterSalesFigures(companyInfo);
    listSalesFigures(companyInfo);
    totalQtSales = calculateTotalQuarterlySales(companyInfo, numberOfQuarters);
    calculeQtSalesAverage(totalQtSales, numberOfDivisions);
    showHighestSales(companyInfo);
}

}

    double[][] companyInfo = new double[10][10];

    Scanner scanner = new Scanner(System.in);

    for (int divisionIndex = 0; divisionIndex < companyInfo.length; divisionIndex++)

    {
        for (int quarterIndex = 0; quarterIndex < companyInfo[0].length; quarterIndex++) {
            System.out.printf("Division %d, Quarter %d   ", divisionIndex + 1, quarterIndex + 1);
            while ((companyInfo[divisionIndex][divisionIndex] = scanner.nextDouble()) < 0) {
                System.out.println("Please enter the number that is more than or equal to one.");
                System.out.printf("Division %d, Quarter %d   ", divisionIndex + 1, quarterIndex + 1);
            }

        }
    }

有幫助嗎?

暫無
暫無

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

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