当前位置: 首页 > 知识库问答 >
问题:

如何检测是否没有来自用户的输入(java)

闻梓
2023-03-14

好吧,所以我正在做这个项目,你必须做一些来自用户的输入

让我们说如果他进入

"12 3"

但他没有输入第二个输入

如果我把它叫做

String something = in.readLine();

如果我打电话

String nextLine = in.readLine();

我有错误。我如何检查是否没有第二次输入?

公共静态void main(String [] args)引发IOException{

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); //ctr + shift + o


    String eachLine = in.readLine(); //ex. "12    5"" or "AB     12"


    String nextLine = in.readLine();

如果用户输入

"3 2"

但没有进入第二个...我得到nullpointerx0016

共有2个答案

封鸿雪
2023-03-14

可以使用计时器类来实现此目的。

看看这里

类似的东西..

TimerTask task = new TimerTask(){
public void run(){
if( input is empty ){
System.out.println( "you input nothing. exit..." );
System.exit( 0 );
}
}
};

安排计时器..

Timer timer = new Timer();
timer.schedule( task, timeoutTime);

//读取输入

String nextLine = in.readLine();

取消计时器..

timer.cancel();
葛海阳
2023-03-14

这取决于你所说的“他不输入第二个输入”是什么意思:

>

  • 如果你的意思是用户输入EOF字符(例如,Linux上的CTRL-D),那么发生的情况是readLine()方法将返回一个空值,你的应用程序可以(并且应该)显式测试它。

    如果您的意思是用户什么都不输入,那么什么都不会发生。您的应用程序将只是坐在那里等待用户输入下一行。为了解决这个问题,您需要某种超时机制......

  •  类似资料:
    • 有一个用@Cacheable注释的方法返回一个对象: 和UserData对象: 如何检测是否调用了带注释的@Cacheable方法,或者其输出是否来自缓存? 解决方法是注入CacheManager并手动检测: 然而,为了简单起见,这段代码没有使用@Cacheable注释。 是否可以使用@Cacheable并检测输出是否来自缓存?

    • 我试图创建一个简单的程序,从用户输入中提取两个数字,并将它们相加在一起。为了正确使用它,我已经把它放下来了,但是如果用户输入其他东西,比如字符串,我会试图阻止崩溃。我如何检查输入而没有异常,因为我听说它们是糟糕的做法? 理想情况下,我希望它只是重复最初的问题,要求输入一个数字。我想这会在一个循环中? 编辑:新代码 旧代码

    • 问题内容: 我正在学习“困难方式” Python35。下面是原始代码,我们被要求对其进行更改,以便它可以接受其中不包含0和1的数字。 这是我的解决方案,可以很好地运行并识别浮点值: 通过搜索类似的问题,我找到了一些答案,这些答案可以帮助我编写另一个解决方案,如下面的代码所示。问题是,使用isdigit()不允许用户输入浮点值。因此,如果用户说要取50.5%,它将告诉他们学习如何键入数字。否则它适用

    • 我试图检查用户是否输入了字符串。如果用户输入了字符串,我的程序应该输出错误消息。如果用户输入了整数,我的程序应该继续运行 这是我到目前为止的代码,我需要添加另一个条件来检查用户是否输入字符串,我尝试了一些方法,但它们不起作用

    • 问题内容: 我有一个JComboBox的子类。我尝试使用以下代码添加一个键侦听器。 但是,这不能正确检测用户何时按下一个键。实际上根本没有调用它。我添加的这个监听器是否错误?还有其他添加方式吗? 问题答案: 关键事件不是在框本身上触发的,而是在其编辑器上触发的。您需要将keyListener添加到JComboBox的编辑器中,而不是直接添加到框中: 编辑:固定方法调用。

    • 问题内容: 扫描仪可用于读取文本文件,用户输入流等。正如上面明确指出的,我专门使用它来读取用户输入。 使用上面我做的Scanner,因为它“骑乘”了System.in,所以在没有下一个输入时对其hasNext()的调用将导致相关线程被阻塞,直到下一个有数据为止,然后再返回true。我想检查一下,getter风格,下一个有数据,而不是像hasNext()返回那样,下一个有数据。 其他问题通过启动一个