java调用方法,为什么返回值无法调用

代码如下
public class match{
int[] Greedy1(int q,int[]A,int[]B){
int x=A[0];
int y=B[0];
int s=q;
Greed e=new Greed();
e.feasible1(s,x,y,B);
Greed r=new Greed();
r.delete(x, A);
r.delete(y, B);
int ass[]=new int[2];
ass[0]=x;
ass[1]=y; //这边调用返回的y,好像也不行!!
return ass;
}
int feasible1(int q,int x, int y,int[]B){
int i=0;
while(x+y!=q){
i++;
y=B[i];
}
if(i==B.length-1 && x+y!=q){
q--;
feasible1(q,x,y,B);
}
return y;
public static void main(String[] args){
int[]A=l.getArray1();
int[]B=l.getArray2();
int[]C=l.getArray3();
Greed p=new Greed();
int ass[];
for(int i=0;i<A.length;i++){
int q=12;//Greed p=new Greed();
p.Greedy1(q,A,B);
op[i][0]=i;
op[i][1]=ass[0]; //!!!!!这边是错误的,可是我调用方法之后,不是返回了数组ass吗?为什么不行
op[i][2]=ass[1];
}
}
}

第1个回答  推荐于2016-07-19
你代码乱七八糟的,连编译都报错,feasible1这个方法都没有正确结束、main方法里的l对象都未定义追问

好吧 只是贴了一部分而已;我的问题就只是
public class A {
void method();}
public class B{
主函数里调用 method(),并且想使用method()内部变量的值,该怎么做?
}

追答

int ass[];你只是定义了变量,并没有给它开辟空间,也就是给这个素组一个长度
这样你试一试:ass[] = p.Greedy1(q,A,B);

追问

嗯 这个我已经试过了,结果:继续报错:Type mismatch: cannot convert from void to int[]

如果将方法名改为 public void……无返回值,但是调用方法(跨类)的时候,我想访问方法内部变量,请问该怎么做?

追答

方法内部变量是局部变量,而这个局部变量的生命周期,仅仅周期只在这个方法中,方法一运行完,这个变量变量便会销毁,外部是不可以用的,这个不像是JavaScript语言和其他语言。

追问

那就只能通过返回我要的参数值 来使用了吗?!
可是这样又回到了原点啊==
我要怎么办啊==

追答

你开个远程,我来协助你,你的问题我还不是完全明白 qq1227054624

追问

要不我把原始 代码 发你好了;

追答

好的,发文件吧

追问

额 qq 号码不存在……

追答

你都发邮件给我了,我调试了你的代码,没有抛异常,也不晓得你的代码要用来干什么,一句注释也没写,而且不够精简。写得不好。估计你那异常原因是因为你文件里有非数字的字符吧

追问

这些问题 我已经自行解决了,还是很感谢

本回答被提问者和网友采纳
第2个回答  2014-06-26
完整 代码...追问

太长了;意思就是
public class A {
void method();}
public class B{
主函数里调用 method(),并且向调用method()内部变量的值
}

第3个回答  2014-06-26
你没有赋值int ass[]
ass = p.Greedy1(q,A,B);追问

继续报错:Type mismatch: cannot convert from void to int[]

相似回答