簡體   English   中英

如何在Java中檢查用戶輸入驗證?

[英]How can you check user input validation in Java?

我正在制作一個簡單的程序,要求用戶在0-19之間輸入五個數字。 我想在每個數字后添加一些東西(比如if語句),以確保它在該范圍內。 如果沒有,程序應該說“請再次閱讀說明”,然后是System.exit(0)。 這是相關的代碼片段:

System.out.println("Please enter 5 numbers between 0 and 19");
System.out.print("1st Number: ");
userNum1 = scan.nextInt();
System.out.print("2nd Number: ");
userNum2 = scan.nextInt();
System.out.print("3rd Number: ");
userNum3 = scan.nextInt();
System.out.print("4th Number: ");
userNum4 = scan.nextInt();
System.out.print("5th Number: ");
userNum5 = scan.nextInt();

任何幫助將不勝感激。

您可以在每個輸入之后放置它,但是您可能想要考慮將此邏輯放入其自己的方法中,然后您可以重用代碼並使用類似validateInput(userNum1);的方法調用它validateInput(userNum1);

用您的實際變量名替換val

if (val < 0 || val > 19) {
    System.out.println("please read the instructions again");
    System.exit(0);
}

這段代碼將為您提供幫助,我添加了一些證券:

public static void main(String[] args) {
    int count = 1;
    Scanner scan = new Scanner(System.in);
    List<Integer> myNumbers = new ArrayList<Integer>();
    System.out.println("Please enter 5 numbers between 0 and 19");
    do {
        System.out.println("Enter Number "+count+" ");
        if(scan.hasNextInt()){
            int input = scan.nextInt();
            if(input >= 0 && input <= 19){
                myNumbers.add(input);
                count++;
            }else{
                System.out.println("Please read instructions again");
                System.exit(0);
            }
        }else{
            scan.nextLine();
            System.out.println("Enter a valid Integer value");
        }
    }while(count < 6);

    /* NUMBERS */
    System.out.println("\n/** MY NUMBERS **/\n");
    for (Integer myNumber : myNumbers) {
        System.out.println(myNumber);
    }
}

希望能幫助到你

首先,我將創建一個迭代N次的for循環,其中N是您要求的數字數(在您的情況下為5)。 想象一下你的50個數字的例子; 這將是非常重復的。

然后,當您在for循環中使用scan.nextInt()獲取每個數字時,您可以根據需要進行驗證:

if (userNum < 0 || userNum > 19) {
    // print error message, and quit here
}

此外,當他們輸入一個超出范圍的數字時,你可以將你的邏輯放在一個while循環中,這樣它就會重新提示他們輸入數字。 這樣,用戶不必重新啟動應用程序。 就像是:

boolean runApplication = true;

while(runApplication) {
    // do your for-loop with user input scanning
}

然后根據用戶是否輸入有效數字,根據需要設置runApplication標志。

由於您已經知道用戶希望輸入多少個數字,我建議您使用for循環。 它使您的代碼更加優雅,您可以通過更改循環的結束條件來添加任意數量的條目。 看起來很長的唯一原因是因為數字1,2,3都以不同的格式結束,即最終的thcoRD,但其余的數字都以TH結尾。 這就是我必須在循環中實現一些if else語句的原因。

為了解釋代碼,每次循環時,它首先告訴用戶他/她輸入的數字的計數。 然后每次循環循環時都會更新numEntry,因此您不需要為多個變量分配多個輸入。 繼續更新相同的變量更有效。 如果用戶輸入的輸入小於0或大於19,系統將在出現錯誤消息后退出。

    System.out.println("Please enter a number between 0 and 19");
    Scanner scan = new Scanner(System.in);
    for(int i = 1; i <=5; i++){
    if(i == 1)
        System.out.println("1st Number");
    else if(i == 2)
        System.out.println("2nd Number");
    else if(i == 3)
        System.out.println("3rd Number");
    else
        System.out.println(i + "th Number");
    int numEntry = scan.nextInt();
    if(numEntry < 0 || numEntry > 19){
        System.out.println("Please read instructions again.");
        System.exit(1);
    }

暫無
暫無

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

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