黑马程序员技术交流社区

标题: 求助!!关于数组求和,在主函数中调用的问题 [打印本页]

作者: 江南    时间: 2012-6-12 13:49
标题: 求助!!关于数组求和,在主函数中调用的问题
定义个功能,求出给定数组的元素的和,在主函数中如何输出?
下面的代码谁给看看?编译提示(ArrayDemo2.java:18: 错误: 缺少返回语句
        })
        public static void main(String [] args)
        {
               
                int [] arr={1,2,2};
                Arraysum(arr);
        }
public static int Arraysum(int []arr)
        {
                        int sum=0;
                for(int x=0;x<arr.length;x++)
                {
                        sum+=arr[x];
                    System.out.println("Arraysum="+sum);
                        return sum;
                }
        }
作者: 李鑫    时间: 2012-6-12 13:55
正确答案:

public static void main(String [] args)
        {
               
                int [] arr={1,2,2};
                Arraysum(arr);
        }
public static int Arraysum(int []arr)
        {
                        int sum=0;
                for(int x=0;x<arr.length;x++)
                {
                        sum+=arr[x];
                    System.out.println("Arraysum="+sum);
                                     }   
         return sum;//return必须放在循环的外边,即大括号外边
}
作者: 郑传庆    时间: 2012-6-12 13:55
把return sum和System.out.println("Arraysum=" + sum);放到for循环外面就可以求和了

public class ArrayDemo2 {
        public static void main(String[] args) {

                int[] arr = { 1, 2, 2 };
                Arraysum(arr);
        }

        public static int Arraysum(int[] arr) {
                int sum = 0;
                for (int x = 0; x < arr.length; x++) {
                        sum += arr[x];
                }
                System.out.println("Arraysum=" + sum);
                return sum;
        }
}

作者: 唐志兵    时间: 2012-6-12 13:56
本帖最后由 唐志兵 于 2012-6-12 13:58 编辑

  1. public class StruTest {
  2.     public static void main(String [] args)
  3.     {
  4.             int [] arr={1,2,2};
  5.             int num = Arraysum(arr);  //这样要定义一个整数型变量来接收返回的数据
  6.             System.out.println(num);  //然后打印输出。
  7.     }
  8.    
  9.     public static int Arraysum(int[] arr)
  10.     {
  11.         int sum = 0;
  12.         for(int x=0;x<arr.length;x++)
  13.         {
  14.                 sum += arr[x];                    //楼主你的源码里面是在这里返回数据,这里返回只能得到第一个数组arr[0]的值,而不能得到全部的和值。
  15.         }
  16.                 return sum;        //首先要完成了for循环之后才返回这个数值
  17.     }
  18. }
复制代码

作者: 杨天皓    时间: 2012-6-12 13:56
你Arraysum这个函数的返回值是int

很多人在编写程序的时候,都会觉得,我不是已经在for循环里面,或者在判断语句里面有return语句了吗?

其实你想想,如果你的for循环条件在一开始就不满足条件,压根就不进去。你这个方法还有返回值吗?


所以你必须得在for循环外部写一个return。  你判断下如果传进来的arr[] 是一个空数组,那直接返回0,否则才去循环。
作者: 余清兰    时间: 2012-6-12 14:16
本帖最后由 余清兰 于 2012-6-12 14:19 编辑

函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
        执行语句;
        return 返回值;
}

return 返回值不能写在执行语句里面,你这里写在了for循环里,函数就没发返回值了,把for里面的内容全部循环执行完了,才返回遍历后的数组元素结果,所以要写在for外面。

正确代码
class test
{

  public static void main(String [] args)
        {
               
                int [] arr={1,2,2};
                Arraysum(arr);
        }
public static int Arraysum(int []arr)
        {
                        int sum=0;
                for(int x=0;x<arr.length;x++)
                {
                        sum+=arr[x];
                    System.out.println("Arraysum="+sum);
                       
                }
                                 return sum;
        }
}

作者: 郑冬    时间: 2012-6-12 14:22
应该在主函数中这样写
public static void main(String args[])
{
    int [] arr = {1,2,2};
    int s = Arraysum(arr);
    System.out.println(s);
}
不能在for循环中输出sum,那样只是打印出arr【0】。
作者: 王广丛    时间: 2012-6-12 16:47
楼主可以这样来写
  1. public static void main(String[] args){
  2.                
  3.                 int[] a = {5,6,3,8};
  4.                 Arraysum(a);
  5.         }
  6.        
  7.         public static int Arraysum(int []arr)
  8.     {
  9.                     int sum=0;
  10.             for(int x=0;x<arr.length;x++)
  11.             {
  12.                     sum+=arr[x];      
  13.             }
  14.             System.out.println("Arraysum="+sum);
  15.             return sum;

  16.     }
复制代码

作者: 江南    时间: 2012-6-12 21:08
是啊 ,那是因为中午学习累 加上吃了就犯困
我现在看出来了啊:(




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