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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳 中级黑马   /  2012-8-31 10:21  /  2277 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
public class TestListIterator2
{
public static void main(String[] args)
{
  String[] s = {"abc","defgeh"};
  List a = new ArrayList();
  for (int i=0; i<s.length; i++)
  {
   a.add(s);
  }
  

  ListIterator it = a.listIterator();
  while (it.hasNext())
  {
   System.out.println(it.next());
   it.add("---------分隔符--------");
  }
  System.out.println("---------下面开始反向迭代------------");
  while (it.hasPrevious())
  {
   System.out.println(it.previous());
  }
//请教这一段红色标记的代码如何用for来改写



}

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 陈莹 于 2012-8-31 10:46 编辑
  1. import java.util.*;
  2. public class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                         String[] s = {"abc","def","hig","klm"};
  7.                         List<String> a = new ArrayList<String>();//加上泛型
  8.                         for (int i=0; i<s.length; i++)
  9.                         {
  10.                                          a.add(s[i]);//这个地方你错了!应该是s[i                        
  11.                         }

  12.                         ListIterator<String> it = a.listIterator();
  13.                          /*
  14.                          while (it.hasNext())
  15.                          {
  16.                                          System.out.println(it.next());
  17.                                          it.add("---------分隔符--------");//不知道你为什么要加这个分割符,如果要是想把这两种打印方式分隔的话,不应该给迭代器中添加
  18.                         }
  19.                          System.out.println("---------下面开始反向迭代------------");
  20.                          while (it.hasPrevious())
  21.                          {
  22.                                         System.out.println(it.previous());
  23.                          }
  24.                         */
  25.                        for(;it.hasNext();)
  26.                         {
  27.                                           System.out.println(it.next());
  28.                         }
  29.                         System.out.println("---------下面开始反向迭代------------");
  30.                         for (;it.hasPrevious();)
  31.                         {
  32.                                            System.out.println(it.previous());
  33.                         }         
  34.       }
  35. }
复制代码
最下面的部分就是用for循环实现你的代码的,你看看,还有你的程序有点问题,给你改了改,你看看
回复 使用道具 举报
  1. ListIterator iterator = a.listIterator();
  2.           
  3.            for(;iterator.hasNext();)
  4.            {
  5.                    System.out.println(iterator.next());
  6.            }
  7.           
  8.            System.out.println("---------下面开始反向迭代------------");
  9.           
  10.            for(;iterator.hasPrevious();)
  11.            {
  12.                    System.out.println(iterator.previous());
  13.            }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 刘佳 于 2012-8-31 11:08 编辑
陈莹 发表于 2012-8-31 10:42
最下面的部分就是用for循环实现你的代码的,你看看,还有你的程序有点问题,给你改了改,你看看 ...

其实我编辑器上面写的是你说的那样,不知道这里怎么贴上去就会自动变成a.add(s);
刚试了下还是自动变了,真不知道为什么。
那个for循环怎么还可以这样写,我以为要把声明迭代器的部分放for里面,难怪结果总不对。
这个for属于哪个格式?
回复 使用道具 举报
刘佳 发表于 2012-8-31 11:06
其实我编辑器上面写的是你说的那样,不知道这里怎么贴上去就会自动变成a.add(s);
刚试了下还是自动变了, ...

for循环的格式不是for(初始化条件;判断条件;表达式)吗,假如没有初始化条件,判断条件,表达式,你也可以不写,假如for(;;),这就表示无条件循环
int i = 0;
for(;i<5;)
{
   i++;
}
上面的代码就等价于for(int i=0;i<5;i++){}
所以说for循环的三个表达式不一定必须写,但是必须有分号,明白了吗?你自己可以写写代码试试

点评

长见识了,厉害,唉,这让我这些底子不好的人情何以堪啊,佩服  发表于 2012-8-31 17:10

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

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