A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡文彬 中级黑马   /  2014-3-11 16:19  /  999 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义一个数组 例如:int[] arr = new int[] {45,23, 68, 54, 77 },完成以下功能
(1)        实现输出数组中元素为奇数的数据。
class Test
{
        public static void main(String [] args)
                {
                 int[] arr = new int[] {45,23, 68, 54, 77 };
                  int[]c=trans(arr);
                 // System.out.println(c);
                }

        public static int []  trans(int [] arr)
        {        
               
                for (int i=0;i<arr.length ;i++ )
                {
                        if (arr%2==1)
                        {
                        System.out.print(arr+" ");        
                        }
                }
        
                return arr;               
        }
}
我想问为什么输出总是带着内存中的地址?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
System.out.print(arr[i] + ""); 你忘记写角标了。。。。
回复 使用道具 举报
for (int i=0;i<arr.length ;i++ )
                 {
                         if (arr%2==1)
                         {
                         System.out.print(arr+" ");        
                         }
                 }
因为你这里if()比较的是引用变量arr,而不是arr[i]里面的值。
而且你输出的也是引用不是值。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 syw02014 于 2014-3-11 16:36 编辑

写的时候要注意哈,你错的地方已用红色标出:
public static int []  trans(int [] arr)
{   
        for (int i=0;i<arr.length ;i++ )
                if (arr%2==1)
                        System.out.print(arr+" ");        
        return arr;               
}
  1. /*
  2. 定义一个数组 例如:int[] arr = new int[] {45,23, 68, 54, 77 },完成以下功能
  3. (1)        实现输出数组中元素为奇数的数据。
  4. */
  5. class Test
  6. {
  7.         public static void main(String [] args)
  8.         {
  9.                 int[] arr = new int[] {45,23, 68, 54, 77 };
  10.                 int[]c=trans(arr);
  11.                  // System.out.println(c);
  12.         }
  13.         public static int []  trans(int [] arr)
  14.         {   
  15.                 for (int i=0;i<arr.length ;i++ )
  16.                         if (arr[i]%2==1)
  17.                                 System.out.print(arr[i]+" ");        
  18.                 return arr;               
  19.         }
  20. }
复制代码
程序输出结果:45 23 77

其实你的函数已经具备输出功能,程序可改为:
  1. /*
  2. 定义一个数组 例如:int[] arr = new int[] {45,23, 68, 54, 77 },完成以下功能
  3. (1)        实现输出数组中元素为奇数的数据。
  4. */
  5. class Test
  6. {
  7.         public static void main(String [] args)
  8.         {
  9.                 int[] arr = new int[] {45,23, 68, 54, 77 };
  10.                 trans(arr);
  11.         }
  12.         public static void trans(int [] arr)
  13.         {   
  14.                 for (int i=0;i<arr.length ;i++ )
  15.                         if (arr[i]%2==1)
  16.                                 System.out.print(arr[i]+" ");               
  17.         }
  18. }
复制代码
程序输出结果:45 23 77  




评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
定义一个数组 例如:int[] arr = new int[] {45,23, 68, 54, 77 },完成以下功能
(1)        实现输出数组中元素为奇数的数据。
class Test
{
         public static void main(String [] args)
                 {
                  int[] arr = new int[] {45,23, 68, 54, 77 };
                   trans(arr);
                 }

         public static void trans(int [] arr)
         {        
                 
                 for (int i=0;i<arr.length ;i++ )
                 {
                         if (arr[i]%2==1)
                                 System.out.print(arr[i]+"\t");        

                 }
         }
}
首先:根据问题的功能,此处只需打印数组中是奇数的元素,所以在定义方法时不需要有返回值。
其次:数组中某个元素的调用时ArrayName[index]

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
首先你的需求是输出数组,而不是要得到返回值你的方法应该是void类型方法应为  public static void trans(int [] arr),其次要输出的是数组中的数据所以 输出语句应该改为System.out.print(arr[i]+" ");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马