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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志海 中级黑马   /  2014-1-4 13:34  /  1407 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐志海 于 2014-1-21 02:39 编辑
  1. public class CollectionDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 ArrayList<String> al=new ArrayList();
  6.                 al.add("kk");
  7.                 al.add("kd");
  8.                 al.add("kc");
  9.                 al.add("ka");
  10.                
  11.                 //sop(al);
  12.                 for(int x=0;x<al.size();x++)
  13.                 {
  14.                         sop(x);
  15.                 }
  16.                
  17.         }
  18.         public static void sop(Object obj)
  19.         {
  20.                 System.out.print(obj);
  21.         }
  22. }
复制代码

为什么输出的不是元素而是0123的地址呢?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

7 个回复

倒序浏览
你打印的x是循环变量,不是结合的元素,这就要调用集合的get(int index)方法来获取对应index位置上的集合元素,代码如下

  1. public static void main(String[] args)
  2.         {
  3.                 ArrayList<String> al=new ArrayList();
  4.                 al.add("kk");
  5.                 al.add("kd");
  6.                 al.add("kc");
  7.                 al.add("ka");
  8.                
  9.                 //sop(al);
  10.                 for(int x=0;x<al.size();x++)
  11.                 {
  12.                         sop(al.get(x));  //这里改为al.get(x)即可
  13.                 }
  14.                
  15.         }
  16.         public static void sop(Object obj)
  17.         {
  18.                 System.out.println(obj);
  19.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
往sop()里传参数错了,你传的0,1,2,3当然会打印0123,要这样
  1.                 for (int x = 0; x < al.size(); x++)
  2.                 {
  3.                         sop(al);
  4.                 }
复制代码

不过这样会把集合打印4次,你可以用增强的循环,像这样
  1. public class CollectionDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 ArrayList<String> al = new ArrayList();
  6.                 al.add("kk");
  7.                 al.add("kd");
  8.                 al.add("kc");
  9.                 al.add("ka");

  10.                 // sop(al);
  11.                 for (String s : al)
  12.                 {
  13.                         sop(s + ",");
  14.                 }

  15.         }

  16.         public static void sop(Object obj)
  17.         {
  18.                 System.out.print(obj);
  19.         }
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
public class CollectionDemo
{
        public static void main(String[] args)
        {
                ArrayList<String> al=new ArrayList();
                al.add("kk");
                al.add("kd");
                al.add("kc");
                al.add("ka");
               
                //sop(al);
                for(int x=0;x<al.size();x++)
                {
                        sop(x);
                }
               
        }
        public static void sop(Object obj)
        {
                System.out.print(obj);
   
//这个地方的参数不应该是obj而是a1.get(x);根据索引的位置找到集合中的元素值   
}
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
集合我也没学好,受教了
回复 使用道具 举报
import java.util.ArrayList;
public class CollectionDemo
{
        public static void main(String[] args)
        {
                ArrayList<String> al=new ArrayList();
                al.add("kk");
                al.add("kd");
                al.add("kc");
                al.add("ka");
               
                //sop(al);
                for(int x=0;x<al.size();x++)
                {
                        sop(x);//这里你调用了sop方法,没有输出集合的元素,
                                                //你传入的参数是x所以你打印了的是0123
                                       
                }
                                //可以用加强for来遍历集合
                                        for(String str : al){
                                                System.out.println(str);
                                        }
               
        }
        public static void sop(Object obj)
        {
                System.out.print(obj);
        }
}

评分

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

查看全部评分

回复 使用道具 举报
for(int x=0;x<al.size();x++)
  {
        sop(x);
   }
你这是直接打印x的值,要获取集合的元素,变成get(x);
回复 使用道具 举报
                for(int x=0;x<al.size();x++)
                {
                        sop(x);                         //你传入的是x  当然显示的是0123
                        sop(al.get(x));              //这个是打印集合中的所有元素
                }






~~!奋斗

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马