调用Java方法时出错

调用Java方法时出错,java,methods,Java,Methods,我是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 conn

我是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;
    }
}

如果有人能给我指出正确的方向,我会非常感激。谢谢。

如果您发布的代码是您的完整代码,那么您似乎需要一个main方法

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;
    }
}
公共类QuickFindUF
{
//
//添加此选项,以便在程序执行时运行代码
//
公共静态void main(字符串[]args)
{
QuickFindUF x=新的QuickFindUF(10);
//
//在这里调用x上的方法
//例如。
//布尔连接=x.连接(2,3);
//
}
私有int[]id;
公共QuickFindUF(内部N)
{
id=新的整数[N];
对于(int i=0;i
如果您发布的代码是您的完整代码,那么您似乎需要一个main方法

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;
    }
}
公共类QuickFindUF
{
//
//添加此选项,以便在程序执行时运行代码
//
公共静态void main(字符串[]args)
{
QuickFindUF x=新的QuickFindUF(10);
//
//在这里调用x上的方法
//例如。
//布尔连接=x.连接(2,3);
//
}
私有int[]id;
公共QuickFindUF(内部N)
{
id=新的整数[N];
对于(int i=0;i
您的main方法可能在类外部,您需要在类内部声明main方法,如下所示:

public static void main(String []args){

QuickFindUF x = new QuickFindUF(10);

}

您的main方法可能在类外部,您需要在类内部声明main方法,如下所示:

public static void main(String []args){

QuickFindUF x = new QuickFindUF(10);

}

27是导致问题的行号。看起来问题出在你没有展示给我们的代码中。(调用
new QuickFindUF
的行不是您目前显示的文件的一部分。)我怀疑您不是从main()方法(或类似方法)中调用构造函数。27是导致问题的行号。看起来问题出在你没有展示给我们的代码中。(到目前为止,调用
new QuickFindUF
的行不是您显示的文件的一部分。)我怀疑您不是从main()方法(或类似方法)中调用构造函数,谢谢!我还有一个快速的问题:当我运行
x.union(0,1)时,在代码块之外,我没有得到错误。但是当我尝试运行
x.show()时要查看输出,我得到一个错误。你知道为什么会这样吗?你的
show()
方法是做什么的?你的错误是什么?你说的代码块之外是什么意思?很抱歉没有说得更清楚,而且明显的打字错误(应该说“代码块内部”)。我认为
.show()
允许我查看输出。当我运行
x.union(0,1)
x.show
时,您说要在
x
上调用方法,我得到一个错误,错误是:
错误:找不到符号x.show();^symbol:method show()位置:QuickFindUF 1 error类型的变量x
该错误表示您没有在类上定义名为
show
的方法。根据发布的代码,您只有
union
connected
作为可用方法。您可能想使用
x.toString()
。但是,它是内置的,为了使其有用,您应该定义自己的
公共字符串toString(){return“foo”}
只要用显示对象的实际代码替换
“foo”
。谢谢!我还有一个快速的问题:当我运行
x.union(0,1)时,在代码块之外,我没有得到错误。但是当我尝试运行
x.show()时要查看输出,我得到一个错误。你知道为什么会这样吗?你的
show()
方法是做什么的?你的错误是什么?你说的代码块之外是什么意思?很抱歉没有说得更清楚,而且明显的打字错误(应该说“代码块内部”)。我认为
.show()
允许我查看输出。当我运行
x.union(0,1)
x.show
时,您说要在
x
上调用方法,我得到一个错误,错误是:
错误:找不到符号x.show();^symbol:method show()位置:QuickFindUF 1 error类型的变量x
该错误表示您没有在类上定义名为
show
的方法。根据发布的代码,您只有
union
connected
作为可用方法。您可能想使用
x.toString()
。但是,它是内置的,为了使其有用,您应该定义自己的
公共字符串toString(){return“foo”}
只要用显示对象的实际代码替换
“foo”