2014-11-17 45 views
-1

这里是我的代码有问题:非静态方法openInputFile(字符串)不能从静态CONTEX的Java引用

public File openInputFile(Scanner kb) 
{ 
    if(kb == null) 
    { 
    throw new RuntimeException("ERROR! Scanner Not Detected."); 
    } 
    System.out.print("Enter Name of File: "); 
    String fn = kb.nextLine(); 
    File inf = FileUtil.openInputFile(fn); 
    return inf; 
} 

我收到以下错误:

FileUtil.java:33: error: non-static method openInputFile(String) cannot be referenced from a static context 
     File inf = FileUtil.openInputFile(fn); 
         ^

没有什么静态,所以我不知道为什么我得到这个错误。谁能帮忙?

+0

你用它告诉编译器它是静态的方式实例来调用它。 –

+0

你能详细说一下吗? – user210394

+0

当方法是静态时,你会像使用类名一样使用它。方法的名称 –

回答

0

File inf = FileUtil.openInputFile(fn); 告诉编译器openInputFile(fn)是类FileUtil的静态方法,因为您试图从类名称本身调用该方法。这就是为什么说编译

FileUtil.java:33: error: non-static method openInputFile(String) cannot be referenced from a static context

因此,所有你需要做的是,使文件UTIL的对象,并调用来自该对象的方法。

+0

op使用方法openInputFile内的openInputFile方法 –

+0

参数类型不同。 FileUtil方法接受的字符串,而运算的方法有一个类型的参数“Scanner' – guptakvgaurav

0

FileUtil类有一个方法openInputFile(),这似乎是无静电,因此你必须通过创建FileUtil

FileUtil fileut= new FileUtil(); 
fileut.openInputFile(); 
+0

运算使用openInputFile方法的方法openInputFile –

+0

是内部的,但这些方法似乎被覆盖,因为他们有不同的PARAMS –

+0

但它听起来有点混乱,不表达什么程序员试图在这里完成? –

相关问题