如何正确关闭使用Locale的Java扫描程序

时间:2015-11-27 08:52:01

标签: java eclipse

我在Java程序中使用Scanner并且Code正常运行。 但是,每当我使用“.useLocale(Locale.US)”时,我会在IDE(Eclipse Mars)中收到警告。 代码段:

Scanner factor1Input = new Scanner(System.in).useLocale(Locale.US);

double factor1 = factor1Input.nextDouble();

factor1Input.close();

代码可以编译,执行和工作,但是,我在IDE中收到以下警告:

警告:

  

资源泄漏:<'未分配的可关闭值'>永远不会关闭

所有不使用“useLocale”的扫描程序都会在没有任何警告的情况下关闭,IDE和编译器也不会抱怨它们。

致以最诚挚的问候,并提前感谢您,

CONI

PS:由于所需的声誉点而无法添加的其他标记建议:“scanner”,“uselocale”

1 个答案:

答案 0 :(得分:0)

选项1:显示eclipse,关闭所有打开的扫描仪......

您可以使用try-with-resources或在finally块中关闭扫描仪。

尝试与 - 资源

try (Scanner scanner = new Scanner(System.in); //
     Scanner factor1Input = scanner.useLocale(Locale.US)) {
   double factor1 = factor1Input.nextDouble();
   // ...
}

最后阻止

Scanner scanner=null;
Scanner factor1Input=null;

try {
    scanner = new Scanner(System.in);
    factor1Input = scanner.useLocale(Locale.US);

    double factor1 = factor1Input.nextDouble();

    // ...
} finally {
   if (factor1Input != null) {
       factor1Input.close();
   }

   if (scanner != null) {
       scanner.close();
   }
}

选项2:取消警告

 try (@SuppressWarnings("resource")
 Scanner factor1Input = new Scanner(System.in).useLocale(Locale.US)) {
     double factor1 = factor1Input.nextDouble();
     // ...
 }