2012-10-30 48 views
0

所以我的作業只問我類方法,但它需要我打開.java和.class文件。以及我有理論上應該工作的代碼,但無論我嘗試什麼,它都不會編譯。比如這裏有一個:在java中編譯類方法

public class findFourLetterWord(String[] strings) { 
    public static void main(String[] args) { 
    for (int i = 0; i < strings.length; i++) 
     if (strings[i].length()==4) 
      return strings[i]; 
    return null; 
} 
} 

,這裏是我得到的錯誤:

8 errors found: 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 9] 
Error: The public type findFourLetterWord must be defined in its own file 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 9] 
Error: Syntax error on token "(", { expected 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 9] 
Error: Syntax error on token ")", ; expected 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 9] 
Error: Syntax error, insert "}" to complete Block 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 11] 
Error: Cannot make a static reference to the non-static field strings 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 12] 
Error: Cannot make a static reference to the non-static field strings 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 13] 
Error: Cannot make a static reference to the non-static field strings 
File: D:\School\CSC 2310\hw5_elemmons1\FindFourLetterWord.java [line: 14] 
Error: Void methods cannot return a value 

有什麼建議?

+2

Ouch。從類聲明中刪除參數。 'public class FindFourLetterWord {...}'同時大寫類名的第一個字母 –

+0

另外,FindFourLetterWord.java以大寫字母F開頭,類名正常f。公共類和.java文件的名稱必須匹配。 –

+0

快速Google搜索提出[this](http://www.roseindia.net/javatutorials/manypublicclassesinonefile.shtml)。 :P – Miguel

回答

0

假設你正在運行Eclipse作爲IDE,如果你重新排列你的代碼是這樣的:

public class FindFourLetterWord { 

    public static void main(String[] args) { 

    for (int i = 0; i < args.length; i++) { 

     if (args[i].length() == 4) { 
      System.out.println(args[i]); 
      break; 
     } 
    } 
    } 

} 

,然後保存更改(自動觸發編譯),你可以運行你編譯的程序( .class文件)從一個命令行,有幾個參數(即包含在args),即詞搜索列表:

$> cd /path/to/your/FindFourLetterWord.class/file 
$> java FindFourLetterWord aba abba ab a 

你會得到指定的話(ABBA)中的前4個字母的單詞。
通過這種方式,您實際上調用了該類的main方法(提供了幾個String參數),這是每個Java程序的入口點。正如其他人已經說過的,首先嚐試從基礎知識中學習。

0
  • 首先,請將您的班級命名爲您的檔案:FindFourLetterWords帶上限。
  • 從類聲明中刪除(String[] strings)(這是在已經的主要方法)
0

我想也許你需要做的

public class FindFourLetterWord { 
    public static void main(String[] args) { 
     for (int i = 0; i < strings.length; i++){ 
     if (strings[i].length()==4) 
      System.out.println(strings[i]); 
     } 
    } 
} 

這將打印出您輸入的四個字母的單詞。

查看關於方法和類的java tutorial以獲取更多信息。

0

您的來源有許多問題。你真的應該找到一個體面的介紹書,因爲你犯的錯誤是基本的錯誤。

第一個錯誤消息表示類public class findFourLetterWord需要位於其名稱爲findFourLetterWord.java的文件中,但是需要大寫,並且您的文件名以大寫字母f開頭,而不是小寫字母f你的班名開始。所以請把你的班級的第一個字母大寫。

你不會像你所做的那樣爲類提供參數。你正在對待這個類,就像它是一種方法。類中的方法需要參數或參數,但是類本身不包含參數或參數。

接下來,類中的靜態方法無法訪問非靜態的類方法。您需要了解靜態方法和總是存在的變量之間的區別,以及從類創建對象時創建的動態方法和變量。

類是創建對象的描述或模板。在創建實際對象之前,不是靜態的方法和變量不可用。但是,可以訪問靜態方法和變量,而無需從類中實際創建對象。

所以你需要類似以下的東西,我沒有測試過,甚至沒有編譯,所以可能會有錯誤,但它會讓你開始。然而,有幾種方法可以做到這一點,這只是一種使用對象和新的方法的粗略草案,用來演示靜態變量和非靜態變量與方法之間的區別。

public class FindFourLetterWord { 
    String [] myArgs; 
    // constructor for the class 
    public FindFourLetterWord (String [] args) { 
     myArgs = args; 
    } 

    public String FindWord() { 
     for (int i = 0; i < myArgs.length; i++) 
      if (myArgs[i].length() == 4) 
       return myArgs[i]; 
     } 
     return null; 
    } 

    // the main where processing starts 
    public static void main(String[] args) { 
     FindFourLetterWord myObj = new FindFourLetterWord(args); 

     String foundWord = findWord(); 
     if (foundWord == null) { 
      System.out.println ("no word found"); 
     } else { 
      System.out.println ("Found word " + foundWord); 
     } 
    } 
}