小编Emm*_*zie的帖子

close,析构函数和finalize:Java矛盾

我有以下代码,在我的班级中逐行读取文件时效果很好.

 try {  FileInputStream in = new FileInputStream(filename);
        BufferedReader reader=new BufferedReader(new InputStreamReader(in));
        String line;
        while((line=reader.readLine())!=null){
             // read the file
        }
    }
    catch (Exception e) {
        System.out.println(e);
    }
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试将命令添加为close,那么在文件读完之后,我就得到了错误:

    in.close();

Error:(131, 9) java: cannot find symbol
symbol:   variable in
location: class ReadFile
Run Code Online (Sandbox Code Playgroud)

我在使用后搜索了清洁对象,并在程序结束前需要关闭文件.并在Java上发现了几个帖子,但很多都非常矛盾.关键是,最后我感到非常困惑.

我错了,或者Java编程有点模糊和混乱?我的意思是,显然没有真正使用析构函数,使用finalize是非常值得怀疑的,并且使用close也被认为是不必要的.关于这些问题的一些帖子是矛盾和非决定性的.

那么,如何在这里继续?在我真的需要关闭文件的情况下,如何摆脱这个错误信息?关闭文件真的可有可无和不必要吗?如何为程序完成清理类实例?

java file-io class finalize code-cleanup

3
推荐指数
2
解决办法
288
查看次数

方法没有定义 - 编译器如何错过它?

为什么我的类中的方法编译并说在我尝试运行它之后没有声明它的任何线索?正如任何人都可以在代码中看到的那样,function2在类中声明:

class MyClass():
  def __init__(self):
      pass

  def function2(self,myfilename):
      file = open(myfilename, "r")

      for line in file:
          print(line, end='')

      file.close()

  def function1(self,myfilename):
      function2(myfilename)

def main():
    myfilename = "input.txt"    
    obj = MyClass()
    obj.function1(myfilename) 

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我编译代码没有问题.但是在尝试运行时,它说:

NameError: name 'function2' is not defined
Run Code Online (Sandbox Code Playgroud)

为什么这个编译很好,但是在运行时会崩溃?有什么建议?

python compiler-construction debugging error-handling python-3.x

3
推荐指数
1
解决办法
101
查看次数

可比较用作二叉树中的结构

我有一个用 Java 编写的二叉树,效果很好。但是我想增强节点中的数据内容。目前,我可以在其上添加值,例如:

for( int i = 1; i <=10; i++ )
    t.insert( new Integer( i ) );
Run Code Online (Sandbox Code Playgroud)

这将添加这样的项目:

public void insert( Comparable item ) {
    current = parent = grand = header;
    nullNode.element = item;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是树的格式:

private static class RedBlackNode {
    // Constructors
    RedBlackNode( Comparable theElement ) {
        this( theElement, null, null );
    }

    RedBlackNode( Comparable theElement, RedBlackNode lt, RedBlackNode rt ) {
        element  = theElement;
        left     = lt;
        right    = rt;
        color    = RedBlackTree.BLACK;
    }

    Comparable …
Run Code Online (Sandbox Code Playgroud)

java binary-tree comparable data-structures

3
推荐指数
1
解决办法
328
查看次数