
[code]

    public class Practice7 {
      public static void main(String[] args) {
        int num1=new java.util.Scanner(System.in).nextInt();
        int num2=new java.util.Scanner(System.in).nextInt();
    
        System.out.println(num1+num2);
      }
    }
    
[/code]

num1とnum2をそれぞれキーボードで入力し、Enterでその合計を表すコードなのですが、  
int num1 =...とint num2 =... の2つの行の左に黄色い！マークとライトボルブがついて、  
カーソルをそちらに持っていくと、「リソース・リーク'<Unassigned Closeable Value>'が閉じられることはありません。」とでてきます。

何が間違っているのかが分からず、この「リソース...」も理解が出来ないので、教えていただけるとありがたいですm__m


CC BY-SA 4.0
2018-02-02T10:18:04.337
41408
2018-05-06T06:34:28.780
2018-05-06T06:34:28.780
754
27249
question
java
java リソース・リーク'<unassigned Closeable value>'が閉じられることはありません。


Scannerに対してcloseメソッドが呼ばれていないことに対するメッセージだと思います。

以下のコードならそのメッセージはでるのでしょうか？

[code]

    public static class Practice7 {
        public static void main(String[] args) {
    
            Scanner scanner = new java.util.Scanner(System.in);
    
            int num1 = scanner.nextInt();
            int num2 = scanner.nextInt();
    
            scanner.close();
            System.out.println(num1 + num2);
        }
    }
    
[/code]

また、ScannerはAutoClosableを実装しているので、Java7以降であればtry-with-
resourceの書き方でもクローズができると思います。


CC BY-SA 3.0
2018-02-02T10:39:22.560
41410
2018-02-02T10:39:22.560
24823
41408
answer