2013-02-16 81 views
-2

當我編譯下面的java代碼時,它會拋出illegal start of type & class, interface or enum expected錯誤。「非法啓動類型」&「類,接口或枚舉預期」

在以下代碼中的內部滲濾類中,聲明屬於另一個類的WeightedQuickUnionUF數據類型。 WeightedQuickUnionUF類存儲在當前工作目錄內名爲「algs4.jar」的jar文件中。

我檢查了幾次代碼,但找不到缺陷並完全卡住了。

的代碼如下:

public class Percolation{ 
    public static Percolation(int n){ 
     boolean[][] A=new boolean[n][n]; 
    } 
    int i,j; 
    WeightedQuickUnionUF WQUF=new WeightedQuickUnionUF[n*n+2]; 
    for(i=1;i<=n;i++) 
    { 
     WQUF.union(0,i); 
    } 
    for (i=n*n-n+1;i<=n*n;i++) 
    { 
     WQUF.union(n*n+1,i); 
    } 
    do { 
     i=StdRandom.uniform(n-1)+1; 
     j=StdRandom.uniform(n-1)+1; 
    } while(A[i][j]!=0) 
    open(i,j); 
    private static int xyto1D(int x,int y){ 
     return (n*x+y); 
    } 
    public static void open(int i,int j){ 
     A[i][j]=1; 
     if(A[i-1][j]==1) {WQUF.union(xyto1D(i-1,j),xyto1D(i,j))}; 
     if(A[i+1][j]==1) {WQUF.union(xyto1D(i+1,j),xyto1D(i,j))}; 
     if(A[i][j-1]==1) {WQUF.union(xyto1D(i,j-1),xyto1D(i,j))}; 
     if(A[i][j+1]==1) {WQUF.union(xyto1D(i,j+1),xyto1D(i,j))}; 
    } 
    public static boolean isOpen(int x,int y){ 
     return (A[x][y]==1); 
    } 
    public static boolean isFull(int x,int y){ 
     return (WQUF.connected(xyto1D(x,y),0)); 
    } 
    public static boolean percolates(){ 
     for (i=n*n-n+1;i<=n*n;i++) 
     { 
      if ((isFull(i))&&(isOpen(i))) return TRUE; 
     } 
     return FALSE; 
    } 
} 

我得到編譯過程中出現以下錯誤:

35 errors found: 

File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: illegal start of type 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: <identifier> expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: ';' expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: <identifier> expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: <identifier> expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: <identifier> expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: illegal start of type 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 7] 
Error: <identifier> expected 
File: C:\Users\Administrator\algs4\Percolati 
on.java 
[line: 8] 
Error: ';' expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 9] 
Error: illegal start of type 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 9] 
Error: illegal start of type 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 9] 
Error: <identifier> expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 11] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 11] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 11] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 14] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 17] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 18] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 20] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 22] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 23] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 25] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 26] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 27] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 28] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 29] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 30] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 32] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 33] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 35] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 36] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 37] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 37] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 40] 
Error: class, interface, or enum expected 
File: C:\Users\Administrator\algs4\Percolation.java 
[line: 42] 
Error: class, interface, or enum expected 
+0

您使用的是IDE還是不行? – 2013-02-16 15:54:09

+0

@psjinx請不要使用代碼格式來設置簡單的標題;它僅用於實際代碼。 – 2013-02-17 04:30:18

+0

好的。我將來會記得這一點。 – pankaj28843 2013-02-17 04:32:27

回答

2

您關閉構造在第四行,每一個錯誤是這樣的結果。

public static Percolation(int n){ 
     boolean[][] A=new boolean[n][n]; 
    } // <<--- here 

請在您的縮進工作。如果我沒有記錯,eclipse和netbeans都有某種自動縮進。你可以很容易地通過正確的縮進來捕捉它。

+0

選擇代碼並按下'Ctrl + I'進行日食。 – 2013-02-16 15:44:53

+2

這似乎應該是構造函數,而不是被認爲是方法。 – 2013-02-16 15:45:37

+0

是的,你是對的。 – Femaref 2013-02-16 15:46:23

1

而且問題是在這裏:(除了其他很多語法錯誤的,由線調試線,這樣你會知道在哪裏和你違反了Java的語法規則)

WeightedQuickUnionUF WQUF=new WeightedQuickUnionUF[n*n+2]; 

你應該改變它:

WeightedQuickUnionUF WQUF=new WeightedQuickUnionUF(n*n+2); 
1
do { 
i=StdRandom.uniform(n-1)+1; 
j=StdRandom.uniform(n-1)+1; 
} while(A[i][j]!=0) 

你需要把分號while語句的結束。

do { 
i=StdRandom.uniform(n-1)+1; 
j=StdRandom.uniform(n-1)+1; 
} while(A[i][j]!=0); 

該代碼似乎有許多問題。我建議你使用Eclipse IDE。

1

在Java中,需要在每次可執行代碼(具有初始化的除外)被放置(靜態或功能)的塊內。

。但是你文件中的行7,你有一個for循環是在課堂上,這是無效的身體。請把它放在構造函數或其他函數中。

事實上,您發佈的代碼還有一個問題。你已經聲明瞭不允許的靜態構造函數。構造函數不能是靜態的。

public static Percolation(int n) { // illegal 
boolean[][] A = new boolean[n][n]; 
} 

假設代碼從管線7起是構造的一部分,這裏是代碼,應該

public class Percolation { 
    public Percolation(int n) { 
    boolean[][] A = new boolean[n][n]; 

     int i, j; 
     WeightedQuickUnionUF WQUF = new WeightedQuickUnionUF[n * n + 2]; 


     for(i=1;i<=n;i++){ 
      WQUF.union(0,i); 
     } 

     for (i=n*n-n+1;i<=n*n;i++){ 
      WQUF.union(n*n+1,i); 
     } 

     do{ 
      i=StdRandom.uniform(n-1)+1; 
      j=StdRandom.uniform(n-1)+1; 
     } while(A[i][j]!=0); //add this semicolon as well. 

     open(i,j); 
    } 

    private static int xyto1D(int x, int y) { 
    return (n * x + y); 
    } 

    public static void open(int i,int j){ 
     A[i][j]=1; 
     if(A[i-1][j]==1) {WQUF.union(xyto1D(i-1,j),xyto1D(i,j))}; 
     if(A[i+1][j]==1) {WQUF.union(xyto1D(i+1,j),xyto1D(i,j))}; 
      if(A[i][j-1]==1) {WQUF.union(xyto1D(i,j-1),xyto1D(i,j))}; 
      if(A[i][j+1]==1) {WQUF.union(xyto1D(i,j+1),xyto1D(i,j))}; 
    } 

    public static boolean isOpen(int x, int y) { 
    return (A[x][y] == 1); 
    } 

    public static boolean isFull(int x, int y) { 
    return (WQUF.connected(xyto1D(x, y), 0)); 
    } 

    public static boolean percolates() { 
    for (i = n * n - n + 1; i <= n * n; i++) { 
     if ((isFull(i)) && (isOpen(i))) 
     return TRUE; 
    } 
    return FALSE; 
    } 
} 
+0

賦值不是這條規則的例外。這是宣言。 – 2013-02-16 15:48:51

+0

@RohitJain是的,不是特定的。我的意思是初始化,就像私人列表 x = new ArrayList (); – Ankit 2013-02-16 16:02:07