【问题标题】:Resource leak: 'sc' is never closed资源泄漏:'sc' 永远不会关闭
【发布时间】:2017-03-30 14:24:08
【问题描述】:

程序计算特定字符、字母或数字在句子中出现的次数。

但是我不断收到消息:

资源泄漏:'sc' 永远不会关闭

我正在使用 Java 和 Eclipse。我该怎么办?

import java.util.Scanner;
class Number-count {
    public static void number - count(String args[]) {
        String s;
        char ch;
        int count = 0;
        Scanner SC = new Scanner(System. in );
        System.out.println("Enter a sentence");
        String str = sc.nextLine();
        System.out.println("Enter a character to be searched for occurence");
        s = sc.nextLine();
        char c = s.charAt(0);
        for (int i = 0; i < str.length(); i++) {
            ch = str.charAt(i);
            if (ch == c) {
                count++;
            }
        }
        System.out.println("Character " + c + " occur " + count + " times");
    }
}

【问题讨论】:

标签: java memory-leaks java.util.scanner


【解决方案1】:

扫描器对象在使用完毕后需要关闭。所以,在你完成它之后,你应该在你的 main 方法结束之前调用以下代码

SC.close();

【讨论】:

    【解决方案2】:

    扫描仪工作完成后输入:sc.close();

    它正在 100% 工作

    【讨论】:

      【解决方案3】:

      试试这个代码

      public static void number - count(String args[]) throws IOException {
       Scanner sc = new Scanner(System.in);
         try{
              //your code
            }
         finally {
         sc.close();
         } 
         }
      

      【讨论】:

      • .close()放在最后的finally块中可以避免由于代码体中发生任何异常而导致资源泄漏。
      【解决方案4】:

      如果你想在一个类中全局使用扫描器(有时是这种情况)

      试试这个:

      static Scanner sc = new Scanner(System.in);
      

      【讨论】:

        猜你喜欢
        • 2012-09-13
        • 2020-07-30
        • 2012-12-20
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 2014-08-19
        • 1970-01-01
        • 2015-03-30
        相关资源
        最近更新 更多