Java 为什么我输入的东西不是整数时,我的扫描器会重复两次,然后所有其他时间都重复一次?

Java 为什么我输入的东西不是整数时,我的扫描器会重复两次,然后所有其他时间都重复一次?,java,Java,我真正希望我的程序每次迭代一次,但当我运行代码时,第一次尝试遵循约束时,它会要求我输入1到7之间的数字两次,在我进行一次尝试后,代码会按预期流动 //import libraries import java.util.Scanner; public class Milestone1 { public static void main(String[] args) { //define variables Scanner scnr = new Scanner(System.in

我真正希望我的程序每次迭代一次,但当我运行代码时,第一次尝试遵循约束时,它会要求我输入1到7之间的数字两次,在我进行一次尝试后,代码会按预期流动

//import libraries
import java.util.Scanner;

public class Milestone1 {

public static void main(String[] args) {
    //define variables
    Scanner scnr = new Scanner(System.in);
    int patternDes = 0;
    boolean world[][] = new boolean[Config.WORLD_ROWS][Config.WORLD_COLUMNS];


    //print statements 
    System.out.println("Welcome to Conway's Game Of Life");
    System.out.println("--------------------------------");
    System.out.println("1)Glider 2)Beacon 3)Beehive 4)R-pentomino");
    System.out.println("5)Random 6)Custom or 7)Exit");
    System.out.print("Choose a pattern:");

    //Have the scanner choose a pattern
    patternDes = scnr.nextInt();

    //check constraints
    while(!(patternDes <= 7 &&  patternDes >= 1))
    {
        System.out.println("Enter a number between 1 and 7: ");
        if(!scnr.hasNextInt()){
            scnr.nextLine();
            continue;
        }
        else{
            patternDes = scnr.nextInt();
            if((patternDes <= 7 && patternDes >= 1)){
                break;
            }
            else{
                continue;
            }
        }
    }
    //write another while loop now

}

}
//导入库
导入java.util.Scanner;
公共级密耳石1{
公共静态void main(字符串[]args){
//定义变量
扫描仪scnr=新扫描仪(System.in);
int-patternDes=0;
布尔世界[][]=新的布尔值[Config.world_行][Config.world_列];
//打印报表
System.out.println(“欢迎来到康威的生活游戏”);
System.out.println(“-------------------------------------”);
系统输出打印(“1)滑翔机2)信标3)蜂巢4)R-pentomino);
系统输出打印(“5)随机6)自定义或7)退出);
System.out.print(“选择图案:”);
//让扫描仪选择一种模式
patternDes=scnr.nextInt();
//检查约束
而(!(patternDes=1))
{
System.out.println(“输入一个介于1和7之间的数字:”);
如果(!scnr.hasnetint()){
序列号nextLine();
继续;
}
否则{
patternDes=scnr.nextInt();
如果((patternDes=1)){
打破
}
否则{
继续;
}
}
}
//现在编写另一个while循环
}
}

这在许多其他代码中也发生过,我花了很长时间来修复特定的方法。

这就是您想要的吗

Scanner scnr = new Scanner(System.in);
int patternDes;
do {
   System.out.println("Enter a number between 1 and 7: ");
   patternDes = scnr.nextInt();
}while (patternDes <= 7 && patternDes >= 1);
Scanner scnr=新扫描仪(System.in);
内部模式;
做{
System.out.println(“输入一个介于1和7之间的数字:”);
patternDes=scnr.nextInt();
}while(patternDes=1);

您可以提供更多信息或粘贴完整的代码吗。