黑马程序员技术交流社区

标题: 看看这个调用怎么弄?? 出错 在 j 那里 [打印本页]

作者: tiamo305    时间: 2016-8-11 00:21
标题: 看看这个调用怎么弄?? 出错 在 j 那里
[Java] 纯文本查看 复制代码


上午 12:19:26
代保禄 2016/8/11 星期四 上午 12:19:26
class Test1 {
        public static void main(String[] args) {
                int [] arr =  new int []{1,2,3,4,5,6,7,8,9};
                int x =arr1(arr);
                System.out.print(x);
        }
        public static int arr1(int[] arr){
                for (int i =0;i<arr.length ;i++ ) {
                        int j = arr;       
                }  
                return j;
        }
}

作者: 水月灬清影    时间: 2016-8-11 17:10
你 i,j都是在for循环内定义的,出了for,就失效。你可以在for前定义变量并初始化。
作者: peterqiu007    时间: 2016-8-11 21:35
楼上正解,出了for循环,i和j就被释放掉了。建议在for循环内做个输出语句,同时将输出类型int改为void。下面给出对你的代码的修改结果
[Java] 纯文本查看 复制代码
class Test1 {
    public static void main(String[] args) {
        int [] arr =  new int []{1,2,3,4,5,6,7,8,9};
        arr1(arr);
    }
    public static void arr1(int[] arr){
        for (int i =0;i<arr.length ;i++ ) {
            System.out.print(arr + " ");
        }  
        }
}



作者: 695212308    时间: 2016-8-11 22:29
//这是关于局部变量方面的问题,int类型不赋值默认为0,所以我把楼主的代码改进了一下
public class Test1 {
        public static void main(String[] args) {
                int [] arr =  new int []{1,2,3,4,5,6,7,8,9};
                int x =arr1(arr);
                System.out.print(x);
        }
        public static int arr1(int[] arr){
                int j=0;
                for (int i =0;i<arr.length ;i++ ) {
                        j = arr[i];
                }  
                return j;
        }
}
作者: peterqiu007    时间: 2016-8-12 11:36
695212308 发表于 2016-8-11 22:29
//这是关于局部变量方面的问题,int类型不赋值默认为0,所以我把楼主的代码改进了一下
public class Test1  ...

亲,你这个代码不对。我跑了一下只输出了9。其实你的for循环最终只return一次j,值为8。
作者: 695212308    时间: 2016-8-12 18:18
peterqiu007 发表于 2016-8-12 11:36
亲,你这个代码不对。我跑了一下只输出了9。其实你的for循环最终只return一次j,值为8。 ...

是的,我是按照你的代码更改了下,你是要输出0到9么?
public class Test1 {
        public static void main(String[] args) {
                int [] arr =  new int []{1,2,3,4,5,6,7,8,9};
                arr1(arr);
              
        }
        public static void arr1(int[] arr){
               
                for (int i =0;i<arr.length ;i++ ) {
                        System.out.println(arr);
                }  
               
        }
}
这样是输出1-9
作者: peterqiu007    时间: 2016-8-12 18:51
本帖最后由 peterqiu007 于 2016-8-12 18:56 编辑
695212308 发表于 2016-8-12 18:18
是的,我是按照你的代码更改了下,你是要输出0到9么?
public class Test1 {
        public static void ...

我不是楼主啦,但是看得出楼主的代码功能是想遍历数组的
你的上一条没有遍历功能,所以我指出来了不过。。。。。。
你的第二条还是不准确啊,System.out.println(arr);不对
应该是System.out.println(arr【i】;(怎么这个回复会吃掉英文标点的中括号)
不然就是把数组的存储位置遍历一遍了

莫非你的中括号也被这个回复吃掉了?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2