循环以验证用户输入

Mar*_*lly 5 java loops

我是Java的新手,我正在尝试编写一个小程序,要求用户在1-10之间输入3个整数,将它们存储在一个数组中,然后将整数相加并告诉用户答案.到目前为止我已经写过这个并且它有效:

import java.util.Scanner;

public class Feb11a {

    public static void main(String[] args) {

        int[] numArr = new int[3];
        int sum = 0;
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter 3 numbers in the range 1 to 10: ");

        for (int i = 0; i < numArr.length; i++) {
            numArr[i] = keyboard.nextInt();
        }

        for (int counter = 0; counter < numArr.length; counter++) {
            sum += numArr[counter];
        }

        System.out.println("The sum of these numbers is " + sum);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我也想验证输入,如果他们输入一个double,一个字符串或1-10范围之外的数字.我尝试了一个while循环,但我无法让程序工作,下面是我到目前为止.如果我取出第一个while循环,第二个工作,即它检查它是否是一个整数:

import java.util.Scanner;

public class Feb11a {

    public static void main(String[] args) {

        int[] numArr = new int[3];
        int sum = 0;
        Scanner keyboard = new Scanner(System.in);

        for (int i = 0; i < numArr.length; i++) {
            //check if between 1 and 10
            while (i > 10 || i < 1) {
                System.out.println("Enter a number in the range 1 to 10: ");

                //check if integer      
                while (!keyboard.hasNextInt()) {
                    System.out.println("Invalid entry, please try again ");
                    keyboard.next();
                }
                numArr[i] = keyboard.nextInt();
            }
        }

        for (int counter = 0; counter < numArr.length; counter++) {
            sum += numArr[counter];
        }

        System.out.println("The sum of these numbers is " + sum);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我如何检查它是否是一个整数,如果它是1-10的范围?

小智 3

import java.util.Scanner;

public class NewClass {

public static void main(String[] args) 
{

int[] numArr = new int[3];
int sum=0,x;
Scanner keyboard = new Scanner(System.in);



  for(int i=0; i<numArr.length; i++)
 {
        //check if between 1 and 10
     System.out.println("Enter a number in the range 1 to 10: ");

                //check if integer      
    while (!keyboard.hasNextInt())
    {
        System.out.println("Invalid entry, please try again ");
        keyboard.next();
    }
            x = keyboard.nextInt();
           if(x>0 && x<=10)
             numArr[i]=x;
           else{
               System.out.println("Retry Enter a number in the range 1 to 10:");
               i--;
           }

}


     for (int counter=0; counter<numArr.length; counter++)
    {
        sum+=numArr[counter];
    }
    System.out.println("The sum of these numbers is "+sum);
 }

}
Run Code Online (Sandbox Code Playgroud)