【问题标题】:How to reject the input如何拒绝输入
【发布时间】:2020-12-15 13:21:14
【问题描述】:

当我没有在“while”部分输入“y”时程序正在退出。当用户输入不是“y”时,请帮我拒绝

try  {
  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  System.out.println("hakdug");
  System.out.println("a.quit");
  System.out.println("b.continue");
  System.out.println("c.break");
  System.out.println("d.exit");

  do {
    System.out.print("Enter your choice:");
    choice = br.readLine();
    if (choice.compareTo("b")==0) {
      System.out.println("Congratulation!");
      break;
    }
    else System.out.println("Incorrect!");

    System.out.print("Again? press y to continue:");
    con =br.readLine();
  } while (con.compareTo("y")==0);

} catch(IOException e){}

【问题讨论】:

  • 所以为了清楚起见,程序会无限循环,直到您按“y”停止?
  • 如果您在代码中提供缩进会帮助其他人更容易查看。我现在已经为你格式化了。此外,只有一个什么都不做的 catch 块是不好的做法——至少,使用 e.printStackTrace();记录异常。

标签: java loops for-loop while-loop


【解决方案1】:

您需要删除代码中的 break 语句:

try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("hakdug");
System.out.println("a.quit");
System.out.println("b.continue");
System.out.println("c.break");
System.out.println("d.exit");


do
{

System.out.print("Enter your choice:");
choice =br.readLine();

if (choice.compareTo("b")==0)
{
System.out.println("Congratulation!");
//break;
}
else System.out.println("Incorrect!");

System.out.print("Again? press y to continue:");
con =br.readLine();
} while (con.compareTo("y")==0);

}catch(IOException e){}

break 语句强制 JVM 中断整个循环。我在这里评论了break语句。

【讨论】:

    【解决方案2】:

    所以现在如果用户输入字母“y”,您将有一个无限循环(另外,这是区分大小写的)。但是,主要的是,如果用户输入任何其他字符,它会退出程序,因为它到达文件末尾,如果您希望它为任何其他键输入做其他事情,您需要对其进行编程。我会还说删除 break 语句很重要,因为这也可能导致问题。

            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("hakdug");
            System.out.println("a.quit");
            System.out.println("b.continue");
            System.out.println("c.break");
            System.out.println("d.exit");
    
            do
              {
               System.out.print("Enter your choice:");
               choice =br.readLine();
    
               if (choice.compareTo("b")==0)
                 {
                   System.out.println("Congratulations!");
                   //break;
                 }
              else 
                   System.out.println("Incorrect!");
    
              System.out.print("Again? press y to continue:");
              con =br.readLine();
             } 
    while (con.compareTo("y")==0);
    
    }catch(IOException e){}
    

    【讨论】:

      【解决方案3】:

      我对这个问题有点困惑。

      但是,如果所需的功能是您不断循环直到用户按下“b”(并表示祝贺),或者如果他们弄错了,那么只有在他们按下“y”时才退出,那么您应该更改

                  } while (con.compareTo("y")==0);
      

                  } while (!(con.compareTo("y")==0));
      

      这告诉它只有在没有按下“y”时才循环,而不是在按下“y”时循环。

      【讨论】:

        猜你喜欢
        • 2010-11-16
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        相关资源
        最近更新 更多