2015-02-05 64 views
0

我是Java新手,遇到調用方法的問題。我希望有人能夠幫助我弄清楚發生了什麼。調用Java方法時出錯

我的代碼如下:

public class QuickFindUF 
{ 
    private int[] id; 
    public QuickFindUF(int N) 
    { 
     id = new int[N]; 
     for (int i = 0; i < N; i++) 
      id[i] = i; 
    } 

    public boolean connected(int p, int q) 
    { return id[p] == id[q]; } 

    public void union(int p, int q) 
    { 
     int pid = id[p]; 
     int qid = id[q]; 
     for (int i = 0; i < id.length; i++) 
      if (id[i] == pid) id[i] = qid; 
    } 
} 

我承擔了棧一看,想通way to call my method將使用下面的代碼:QuickFindUF x = new QuickFindUF(10);

當我運行此我得到一個錯誤,說

QuickFindUF.java:27: error: class, interface, or enum expected 
QuickFindUF x = new QuickFindUF(10); 
^ 
1 error 

如果有人能指出我在正確的方向我真的很感激它。謝謝。

+3

27是造成問題的行號。看起來問題在於你沒有向我們展示的代碼。 (調用'new QuickFindUF'的行不是你到目前爲止顯示的文件的一部分。) – 2015-02-05 17:55:18

+0

我懷疑你不是從main()方法(或類似的)中調用你的構造函數 – 2015-02-05 17:57:15

回答

2

如果您發佈的代碼是完整的代碼,則顯示您需要主要方法。

public class QuickFindUF 
{ 
    // 
    // add this so you can run code when your program executes 
    // 
    public static void main(String[] args) 
    { 
     QuickFindUF x = new QuickFindUF(10); 
     // 
     // call your methods on x here 
     // e.g. 
     // boolean connected = x.connected(2, 3); 
     // 
    } 

    private int[] id; 
    public QuickFindUF(int N) 
    { 
     id = new int[N]; 
     for (int i = 0; i < N; i++) 
      id[i] = i; 
    } 

    public boolean connected(int p, int q) 
    { return id[p] == id[q]; } 

    public void union(int p, int q) 
    { 
     int pid = id[p]; 
     int qid = id[q]; 
     for (int i = 0; i < id.length; i++) 
      if (id[i] == pid) id[i] = qid; 
    } 
} 
+0

謝謝!我還有一個更快的問題:當我在代碼塊外部運行'x.union(0,1);'時,我沒有收到錯誤。但是當我嘗試運行'x.show();'來查看輸出時,出現錯誤。任何線索爲什麼會發生? – 2015-02-05 19:27:40

+0

你的show()方法是做什麼的?你得到的錯誤是什麼?你在代碼塊外面是什麼意思? – 2015-02-05 19:31:48

+0

對不起,沒有更明確的和明顯的錯字(應該說「在代碼塊內」)。我想'.show()'讓我看到輸出。當我運行'x.union(0,1)'和'x.show'時,你說在'x'上調用方法時,出現錯誤:'error:can not find symbol \t \t x.show ); \t \t^ 符號:方法顯示() 位置:類型的變量x QuickFindUF 1 error' – 2015-02-05 19:49:36

1

你的主要方法可能是類外,您需要聲明類中的主要方法是這樣的方法:

public static void main(String []args){ 

QuickFindUF x = new QuickFindUF(10); 

} 
相關問題