调用Java方法时出错
我是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
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”
。