【问题标题】:Load from file cannot be referenced from a static content无法从静态内容引用从文件加载
【发布时间】:2013-05-19 14:47:50
【问题描述】:

我不知道我的主课出了什么问题。我不知道如何改变它来修复它。计算机说:不能从静态上下文中引用从文件加载。如果我尝试更改它,我的主要课程将丢失。

public class Bsp3_1225814_3 {

    public void static main(String [] args){
        List<Linienzug> lst = new ArrayList<>();

        load_from_file("C:\\Users\\schurzm\\Google Drive\\TU\\2.Semester\\VU_Grundlagen Programmieren\\Projekte_Schurz\\1225814_3\\3_in"); 
        dump_to_file("C:\\Users\\schurzm\\Google Drive\\TU\\2.Semester\\VU_Grundlagen Programmieren\\Projekte_Schurz\\1225814_3\\3_out");
    }

    public void load_from_file(String file) {
        Scanner s = null;
        try {
            s = new Scanner(
                new BufferedReader(new FileReader(file))).useDelimiter("\\n");
                while (s.hasNext()) {
                    String[] in = s.next().split(":");
                    Linienzug l = new Linienzug();
                    for (int i=0; i<(in.length-1); i++){
                        l.add(new Punkt(Integer.parseInt(in[i]),
                        Integer.parseInt(in[i+1])));
                    }
                    this.lst.add(l);
                }
            } catch (FileNotFoundException ex) {
                System.out.print("File not found");
            } finally {
                if (s != null) {
                    s.close();
                }
            }
        }

【问题讨论】:

  • 你能从你的例子中删除所有不相关的代码吗?

标签: java class file-io static


【解决方案1】:

当您在静态方法中时,您不能调用没有static 关键字的方法。这是因为在静态上下文中不存在对 this 指针的隐式引用。

【讨论】:

  • 您也可以将 load_from_file 更改为静态。
  • 好吧,但现在他说在 load_from_file 中,不能从静态上下文中引用该变量。
  • 您的整个设计需要返工。您应该在将被实例化的类中使用“this”变量,即。您将要存储数据并执行操作的地方。静态方法适用于 (a) 启动程序或 (b) 执行与上下文无关的操作的情况。
【解决方案2】:

您不能以这种方式从静态上下文调用实例方法。 你必须创建一个实例来调用它们。

修复...

Bsp3_1225814_3 bsp3 = new Bsp3_1225814_3();
bsp3.load_from_file("C:\\Users\\schurzm\\Google Drive\\TU\\2.Semester\\VU_Grundlagen Programmieren\\Projekte_Schurz\\1225814_3\\3_in"); 
bsp3.dump_to_file("C:\\Users\\schurzm\\Google Drive\\TU\\2.Semester\\VU_Grundlagen Programmieren\\Projekte_Schurz\\1225814_3\\3_out");

【讨论】:

    【解决方案3】:
    public void static main(String [] args){
     Bsp3_1225814_3 myObj = new Bsp3_1225814_3();
     myObj.load_from_file("C:\\Users\\schurzm\\Google Drive\\TU\\2.Semester\\VU_Grundlagen 
     ...
    }
    

    并将 lst 声明为您的班级成员。

    【讨论】:

      猜你喜欢
      • 2017-01-07
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 2013-10-06
      • 2020-04-13
      • 1970-01-01
      • 2014-01-19
      • 2021-10-23
      相关资源
      最近更新 更多