[英]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.