嵌套for循环的Java开关将重复

嵌套for循环的Java开关将重复,java,loops,for-loop,system.in,Java,Loops,For Loop,System.in,我是Java新手,在这个特定的for循环中遇到了问题。每次我运行循环并输入一个不是1或2的数字时,循环显示:“请选择正确的选项”。这可能是什么原因 public class Kbin { public static void main (String args[]) throws java.io.IOException { int option; int i = 0; System.out.println("What would you like help with?"); System

我是Java新手,在这个特定的for循环中遇到了问题。每次我运行循环并输入一个不是1或2的数字时,循环显示:“请选择正确的选项”。这可能是什么原因

public class Kbin {

public static void main (String args[]) throws java.io.IOException {

int option;
int i = 0;


System.out.println("What would you like help with?");
System.out.println("\t1.  If statement");
System.out.println("\t2.  Switch statement");
option = (char) System.in.read();


// loop:    
for(i = 0; option != 1 & option != 2; i ++){

    System.out.println("What would you like help with?");
    System.out.println("\t1.  If statement");
    System.out.println("\t2.  Switch statement");
    option = (char) System.in.read();

    switch(option){
        case '1':
            System.out.println("here is how you do an if statement");
            i += 1;
            break loop;
        case '2':
            System.out.println("Here is how you do a switch statement");
            i += 1;
            break loop;
        default:
            System.out.println("Please choose a correct option.");

            continue;
        }

    }
}
}

选项变量未获得您希望它保持的正确值。 当看到您的代码时,用户将输入1或2,然后您试图将其转换为字符,这就是问题所在。尝试将int作为输入
扫描仪输入=新扫描仪(System.in);

option=input.nextInt()

不要使用
System.in.read()
读取输入,因为这样做非常脆弱。取而代之的是使用扫描仪或BufferedReader。另外,您不应该使用goto语句。使用真实的循环结构。每次我运行循环并选择一个不是1或2的数字时,将导致循环显示“请选择正确的选项”。这不是重点吗?抱歉,它会连续显示两次。您的输入是什么?提示:如果您键入一个“3”,后跟返回键,
InputStream
将包含字符
'3'
'\n'