首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >修复在Java中接受用户输入时的无限循环

修复在Java中接受用户输入时的无限循环
EN

Stack Overflow用户
提问于 2018-08-27 04:18:52
回答 1查看 397关注 0票数 0

我一直在编写我的第一个Java脚本,遇到了一个问题。我不明白为什么当这个循环第一次运行时,程序会等待用户输入一些东西,然后处理输入并做出相应的响应,但是第二次运行时,它会在没有等待用户输入的情况下陷入无限循环。根据记录,我确实希望这是一个无限循环,除非程序应该在用户输入"3“时结束。如果在每次用例后我都写上"keep_going = false;“,那么程序就会正常工作,但显然不会一直循环。非常感谢您的帮助,谢谢!

代码语言:javascript
复制
import java.io.*; 

class Choice
{ 
public static void main (String[] args) 
{  
    String input = ""; 
    Boolean keep_going = true;
    while (keep_going)
    {
        input = "";
        System.out.println("Welcome to my program! Would you like to:");
        System.out.println("1. Say hi.");
        System.out.println("2. Find out my favourite colour.");
        System.out.println("3. End the program.");
        System.out.println(">");
        System.out.print( "> " );
        InputStreamReader isr = new InputStreamReader( System.in );
        BufferedReader buffer = new BufferedReader( isr );
        try
        { 
            input = buffer.readLine();
            buffer.close() ; 
        } 
        catch (IOException e ) 
        { 
            System.out.println(e);  
        } 
        switch (input)
        {
            case "1": System.out.println("Hi!"); break;
            case "2": System.out.println("My favourite colour is blue!"); break;
            case "3": return;
            default : System.out.println(input + " is not a valid option. Please try again.");
        }
    }


} 

}

EN

回答 1

Stack Overflow用户

发布于 2018-08-27 04:36:18

无限循环是由于行buffer.close() ;造成的

做这样的调整

  1. 删除buffer.close() ;

//buffer.close() ;

  • case "3": keep_going=false;break;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52029947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档