2 reborn tou reborn_tou 于 2016.09.08 10:12 提问

JAVA数组传参以及返回,打印时出现找不到符号求问哪里出错了?

package calculate;

public class Calculate {

public static void main(String[] args) {
    // TODO code application logic here
    Calculate caculate = new Calculate();
    int count=0;
    for(int i=0;i<50;i++){
        int x=(int)(Math.random()*2);//设置随机0,1变量
        int first=(int)(Math.random()*100);//设置随机0-100变量
        int second=(int)(Math.random()*100);
        int[] result = new int[50];

        if(x==0)
            caculate.addition(i,first,second,result);//调用加法
        else
            caculate.subtraction(i,first,second,result);//调用减法

        count++;
        if(count%5==0) System.out.println("\n");//每五题换行
    }
    for(int i=0;i<50;i++)
            //--------------------------------------------------------------
            //此处的result被提示找不到符号-------------------------------------------------
            //
    System.out.print((i+1)+":  " +  result[i]);
}
//加法
public void addition(int j,int a,int b,int[] result){
    System.out.print((j+1)+":  "+a+" + "+b+" =     ");
    result[j] = a + b;
}
//减法
public void subtraction(int k,int m,int n,int[] result){
    System.out.print((k+1)+":  "+m+" - "+n+" =     ");
    result[k] = m - n;
}

}

3个回答

u011288271
u011288271   2016.09.08 10:18
已采纳

你把result数组的定义拿到它所在for循环的外面。

Arthur_ZBY
Arthur_ZBY 回复reborn_tou: 局部变量只能在所在的这个循环中被找到,在程序中都能用到的变量最好用全局变量,这样在此程序的任何地方都可以被访问到
大约一年之前 回复
u011288271
u011288271 回复reborn_tou: 因为如果你在for循环里面定义,那result的生命周期,就到for循环结束随之结束。 就是说,在for循环的那一对大括号里面,result数组是有效的,出了以后,就找不到了。
大约一年之前 回复
reborn_tou
reborn_tou 噢噢!可以了,求问一下为什么?
大约一年之前 回复
Veggiel
Veggiel   2016.09.08 10:17

你的result在上面的for循环里面,是个局部变量,你下面的for循环当然访问不到result

reborn_tou
reborn_tou 谢谢!知道了!
大约一年之前 回复
asqin
asqin   2016.09.08 10:24

变量的作用域出现问题,同一楼上的看法

Csdn user default icon
上传中...
上传图片
插入图片