2015-02-05 71 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); 

} 
相关问题