2016-03-09 101 views
0

我不是一個正式的java程序員,但通過查看其他答案,您可以使用this.variablename設置類變量。我使用了這個關鍵字,但我仍然以錯誤信息作爲標題,如下所示。這裏是我構建類:無法對非靜態字段內容進行靜態引用Java

public class DataProcess { 
    int rows = 252; // there's actually only 252 rows in the new "Nothing.csv" 
        // file 
    String[][] contents = new String[rows][7]; 
    DecimalFormat df = new DecimalFormat("####0.00"); 

    public DataProcess(String filename, String[][] contents) { 
     this.contents = contents; 

當調用主:

public static void main(String[] args) { 
     String filename = ""; 
     filename = args[0]; 

     DataProcess dp = new DataProcess(filename, contents); <==ERROR HERE 

     System.out.println(dp.isContiguousWeek("12/30/13", "1/1/14")); 
     System.out.println(dp.isContiguousWeek("12/30/04", "1/3/05")); 
     System.out.println(dp.isContiguousWeek("1/3/05", "1/5/05")); 
     System.out.println(dp.isContiguousWeek("1/7/05", "1/10/05")); 
     System.out.println(dp.isContiguousWeek("1/31/05", "2/1/05")); 
     System.out.println(dp.isContiguousWeek("4/29/05", "5/2/06")); 

     System.out.println(dp.find_weeks(contents)); <== ERROR HERE 
    } 
+1

您尚未定義和初始化'contents'在'main'。 –

+0

這是無意義的,因爲您正在嘗試引用實例的成員,內容,而未創建實例。退一步,找出你真正想要完成的事情。 –

+0

@ElliottFrisch定義的主要內容似乎工作。 –

回答

0

你應該提供一個getter方法inyour DataProcess類給訪問非靜態內容。

public String[][] getContents(){ 
    return this.contents; 
} 

而且,改變DataProcess.find_weeks()方法的簽名,並消除了對您傳遞給find_weeksString[][]參數。您不需要通過contents,因爲您在主(dp)中創建的DataProcess實例已經引用了它自己的contents對象。

最後,在你的主,只是調用dp.find_weeks()

相關問題