黑马程序员技术交流社区

标题: 大神留步,小弟一事不明,速速进来啊。急求急急急!! [打印本页]

作者: 待解封的小刀    时间: 2014-7-6 17:32
标题: 大神留步,小弟一事不明,速速进来啊。急求急急急!!
class Test5
{      public static void main(String[] args)      //这是求数组中能被2整出的数。我想用int写啊 但是写不出
        {        int arr[]={2,5,7,4,8,13};                   来,,,,,,,求指点啊。
                System.out.println(getZhi(arr));
                getZhi(arr);
        }
        public static void getZhi(int arr[])   这里如果用int 是怎么写的啊?
        {       
                for(int x=0;x<arr.length;x++)
                {
                        if(arr[x]%2==0)           用int会涉及返回值return  我一直不太懂这个return要放在哪?
                                                                是放在if下面 还是放在for语句的外面啊。
                                                                还有是return什么啊?怎么写啊 求????
                                                         
                    System.out.println(arr[x]);
                }
       }
}

作者: blz01003hm    时间: 2014-7-6 17:41
class Test5
{      public static void main(String[] args)      
        {        int arr[]={2,5,7,4,8,13};                  
                System.out.println(getZhi(arr));//getZhi函数返回值是void,会报异常
                getZhi(arr);
        }
        public static void getZhi(int arr[])   //void是无返回值,不用写return语句
        {        
                for(int x=0;x<arr.length;x++)
                {
                        if(arr[x]%2==0)           
                                                         
                    System.out.println(arr[x]);
                }
       }
}
作者: 待解封的小刀    时间: 2014-7-6 18:22
blz01003hm 发表于 2014-7-6 17:41
class Test5
{      public static void main(String[] args)      
        {        int arr[]={2,5,7,4, ...

亲 这个题目是求数组中的能被2整除的数啊。结果不是里面的数吗?这样的话 不是用int表示吗?
例如求数组{2,4,7,9,1,13}的最值的时候。用的也是int类型的啊。
判断是用void还是int不是先看结果吗?我刚看到基础视频  他是说写函数要两个确定。
一是确定结果,确定返回值类型。
二是确定是否有未知内容。这是明确参数列表
这样看的话 这个题目的结果是数 那么返回值类型应该是int啊;不确定的就是数组所以参数是数组。
。。。。。。。
作者: 寻得美好    时间: 2014-7-6 22:12
本帖最后由 寻得美好 于 2014-7-6 22:44 编辑

return后面不能再跟语句了,因为主程序按顺序执行语句,当执行到return后会直接返回,return后面的语句会执行不到
               

作者: z-翔    时间: 2014-7-6 23:54
函数如果返回int类型,只能返回一个值
作者: z-翔    时间: 2014-7-6 23:56
这是我改的代码,返回的是能被二整除的数组,不知道你是不是这个意思
class Test5
{      
        public static void main(String[] args)      
        {      
                        int arr[]={2,5,7,4,8,13};                  
                        int [] a = getZhi(arr);
                        for(int x=0;x<a.length;x++)
                                System.out.println(a[x]);

        }
        public static int[] getZhi(int [] arr)   
            {
                        //定义一个计数器,计算要返回的数组的长度
                        int count = 0;
                        for(int x=0;x<arr.length;x++)
                        {
                                if(arr[x]%2==0)
                                        count++;
                        }
                        //定义一个数组,长度为计数器所计算的长度
                        int [] arr1 = new int[count];
                        //将能被二整除的数存入该数组
                        int y = 0;
                        for(int x=0;x<arr.length;x++)
                        {
                               
                                if(arr[x]%2==0)
                                {
                                        arr1[y]=arr[x];
                                        y++;
                                }
                        }
                        //返回该数组
                        return arr1;
            }       
}


作者: 待解封的小刀    时间: 2014-7-7 09:06
z-翔 发表于 2014-7-6 23:56
这是我改的代码,返回的是能被二整除的数组,不知道你是不是这个意思
class Test5
{      

非常谢谢  我明白了。
作者: 待解封的小刀    时间: 2014-7-7 10:45
z-翔 发表于 2014-7-6 23:56
这是我改的代码,返回的是能被二整除的数组,不知道你是不是这个意思
class Test5
{      

我刚刚试了下 显示错误了 。return的类型错了  需要int 型  return的是int 【】型。这个怎么解决啊  
作者: 待解封的小刀    时间: 2014-7-7 10:49
寻得美好 发表于 2014-7-6 22:12
return后面不能再跟语句了,因为主程序按顺序执行语句,当执行到return后会直接返回,return后面的语句会执 ...

嗯 是啊 。。。。明白,,,。。就是return 值  只有一个数值  返回后  就跳出循环了 结束了哦  终于明白了。。
作者: 待解封的小刀    时间: 2014-7-7 10:51
z-翔 发表于 2014-7-6 23:54
函数如果返回int类型,只能返回一个值

嗯  这里我明白了 想了好久。。。。。。。你下面的程序写的真好。。 我执行了一遍  显示错误 说retun的类型错了 这里怎么改啊。
作者: z-翔    时间: 2014-7-7 10:53
待解封的小刀 发表于 2014-7-7 10:45
我刚刚试了下 显示错误了 。return的类型错了  需要int 型  return的是int 【】型。这个怎么解决啊   ...

不对啊, public static int[] getZhi(int [] arr) 返回的就是int[]型啊,我运行了,没有错啊
作者: z-翔    时间: 2014-7-7 10:57
待解封的小刀 发表于 2014-7-7 10:51
嗯  这里我明白了 想了好久。。。。。。。你下面的程序写的真好。。 我执行了一遍  显示错误 说retun的类 ...

你 public static int[] getZhi(int [] arr) 里int后边的中括号没丢吧?
作者: 待解封的小刀    时间: 2014-7-7 12:13
z-翔 发表于 2014-7-7 10:57
你 public static int[] getZhi(int [] arr) 里int后边的中括号没丢吧?

貌似 丢了。。。。哦哦   非常非常感谢 亲 。。。
作者: 寻得美好    时间: 2014-7-7 12:23
我写了个程序,可以运行。   你可以看一下

public class Test5
{
        public static int point = 0;/*记录数组中能被2整除的数的个数*/
        public static void main(String[] args)
        {
                int[] arr = {2,5,7,4,8,13};
                int[] ar = getZhi(arr);/**/
                for (int x = 0;x < point;x++)
                {
                        if (x!=point-1)
                                System.out.print(ar[x]+" ,");
                        else
                                System.out.println(ar[x]);
                }                               
        }
        public static int[] getZhi(int[] arr)
        {
                int[] a = new int[arr.length];/*能被2整除的元素最多为传入数组的长度*/
                for (int x = 0;x < arr.length;x++)
                {
                        if(arr[x]%2==0)
                        {
                                point++;
                                a[point-1] = arr[x];
                        }
                }
                return a;
        }
}
作者: 待解封的小刀    时间: 2014-7-7 12:44
寻得美好 发表于 2014-7-7 12:23
我写了个程序,可以运行。   你可以看一下

public class Test5

哦哦 谢谢了 愿好人一生平安。:handshake




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