Java 我可以在静态块中使用InputStreamReader进行输入吗?

Java 我可以在静态块中使用InputStreamReader进行输入吗?,java,Java,回答-从技术上讲,是的,你可以 然而,您的示例是读取一个数字并将其丢弃。静态块中的局部变量在块的末尾消失 通常,以这种方式读取用户输入是一个坏主意,因为: 无法处理静态块中抛出的异常。在您的示例中,如果扫描仪无法读取整数,则将引发未检查的异常。这将导致应用程序崩溃,出现异常InInitializeRerror 在某些情况下,很难判断何时(甚至是否)运行静态块 这是一种编写此代码的奇怪方式。这样的代码对于必须维护它的人来说是个问题 通常的做法是从main(String[])方法中读取(直接或间

回答-从技术上讲,是的,你可以

然而,您的示例是读取一个数字并将其丢弃。
静态
块中的局部变量在块的末尾消失

通常,以这种方式读取用户输入是一个坏主意,因为:

  • 无法处理
    静态
    块中抛出的异常。在您的示例中,如果
    扫描仪
    无法读取整数,则将引发未检查的异常。这将导致应用程序崩溃,出现
    异常InInitializeRerror
  • 在某些情况下,很难判断何时(甚至是否)运行
    静态
  • 这是一种编写此代码的奇怪方式。这样的代码对于必须维护它的人来说是个问题

通常的做法是从
main(String[])
方法中读取(直接或间接)调用的代码输入。这样,您就可以控制何时读取它,并使用“主”线程上的处理程序捕获任何异常。

只需搜索它,就会有很多示例。尝试时发生了什么?当需要复制/粘贴时,请不要发布屏幕截图。