使用Scanner类正确放置myScanner.next()方法

问题1: 我试图确定为什么不能将myScanner.nextLine()方法放在我在else {}之前将其注释掉的位置。似乎应该起作用。是否因为需要将其放置在while()的内部,但是要放置在if()的外部?我很难知道逻辑上的位置。

问题2: 在编写代码时,如果用户输入了有效的整数,则要求输入“输入数字2”,然后要求“输入数字3”,然后对它们求和。如果用户为任何条目输入了除整数以外的任何数据,该代码将打印出“输入的无效数字”,并且仅将输入的有效整数相加。我要执行的操作是强制用户仅输入有效的整数,并且该代码将重复为该条目重复“输入数字X”,直到用户这样做为止。有人可以让我知道这是怎么做的吗?谢谢。罗恩

     import java.util.Scanner;

    public class Main {

        public static void main(String[] args) {

            Scanner myScanner = new Scanner(System.in);
            int counter = 0;
            int addSum = 0;

            while (counter < 3){
                counter++;
                int numberEntered = 0;

                System.out.println("Enter number " + counter + " :");

                boolean hasNextInt = myScanner.hasNextInt();

                if(hasNextInt) {
                    numberEntered = myScanner.nextInt();

                  //   myScanner.nextLine(); //why can't myScanner.nextLine() could go here right after the number entered
                                          // is captured and stored in the numberEntered variable;

                    addSum = addSum + numberEntered;

                } else {
                    System.out.println("Invalid number entered");
                }

               myScanner.nextLine();  // myScanner.nextLine only works if placed here before closing of the while loop;

            }
            System.out.println("The sum of the numbers entered are " + addSum);
            myScanner.close();

        }
    }
评论