for循环、增强for循环、迭代器

1. for循环

for(初始化条件;终止条件;循环条件){

        循环体;

}

代码示例(一个完全用for循环打印输出的丑丑圣诞树): 

import java.util.Scanner;

public class Demo12 {

	public static void main(String[] args) {

		System.out.println("请输入要打印的圣诞树的叶子层数和树干高度:");
		Scanner scanner = new Scanner(System.in);
		int x = scanner.nextInt();
		int y = scanner.nextInt();

		/**
		 * 上部分for循环中,最外层控制树叶的层数 紧接着的for循环,控制每一层树叶的各个小层的树叶 再接下来的两个for循环,用于控制打印树叶
		 * 
		 * 下部分for循环中,最外层控制树干的高度 紧接着的两个for循环,控制树干的宽度
		 * 
		 * 如果输入 树叶层数为2  树干高度为2
		 * 
		 * 打印第一层树叶的第一小层
		 * i=1 true
		 * j=1 true
		 * 	k=1 true sout( ) k++
		 * 	k=2 true sout( ) k++
		 * 	k=3 true sout( ) k++
		 * 	k=4 false
		 * 		l=0 true sout(^ ) l--
		 * 		l=-1 false sout(\n)
		 * 			j++
		 * 打印第一层树叶的第二小层
		 * j=2 true
		 * 	k=2 true sout( ) k++
		 * 	k=3 true sout( ) k++
		 * 	k=4 false
		 * 		l=1 true sout(^ ) l--
		 * 		l=0 true sout(^ ) l--
		 * 		l=-1 false sout(\n) 
		 * 			j++
		 * 打印第一层树叶的第三小层
		 * j=3 true k=3 true sout( ) k++
		 * 	k=4 false
		 * 		l=2 true sout(^ ) l--
		 * 		l=1 true sout(^ ) l--
		 * 		l=0 true sout(^ ) l--
		 * 		l=-1 false sout(\n) 
		 * 			j++
		 * 进入第二层树叶的第一小层的打印
		 * j=4 false i++
		 * 
		 * 打印第二层树叶的第一小层
		 * i=2 true
		 * j=2 true
		 * 	k=1 true sout( ) k++
		 * 	k=2 true sout( ) k++
		 * 	k=3 true sout( ) k++
		 * 	k=4 false
		 * 		l=1 true sout(^ ) l--
		 * 		l=0 true sout(^ ) l--
		 * 		l=-1 false sout(\n)
		 * 			j++
		 * 打印第二层树叶的第二小层
		 * j=3 true
		 * 	k=2 true sout( ) k++
		 * 	k=3 true sout( ) k++
		 * 	k=4 false
		 * 		l=2 true sout(^ ) l--
		 * 		l=1 true sout(^ ) l--
		 * 		l=0 true sout(^ ) l--
		 * 		l=-1 false sout(\n) 
		 * 			j++
		 * 打印第二层树叶的第三小层
		 * j=4 true k=3 true sout( ) k++
		 * 	k=4 false
		 * 		l=3 true sout(^ ) l--
		 * 		l=2 true sout(^ ) l--
		 * 		l=1 true sout(^ ) l--
		 * 		l=0 true sout(^ ) l--
		 * 		l=-1 false sout(\n) 
		 * 			j++
		 * 结束树叶的打印
		 * j=5 false i=3 false
		 * 
		 * 进行树干的打印
		 * 新的for循环
		 * i=1 true 
		 * 	j=1 true sout( ) j++
		 * 	j=2 true sout( ) j++
		 *   j=3 false
		 *   k=3 true sout(|) k++
		 *   k=4 true sout(|) k++
		 *   k=5 true sout(|) k++
		 *   k=6 false sout(\n) 
		 *   i++
		 * i=2 true 
		 * j=1 true sout( ) j++
		 * 	j=2 true sout( ) j++
		 *   j=3 false
		 *   k=3 true sout(|) k++
		 *   k=4 true sout(|) k++
		 *   k=5 true sout(|) k++
		 *   k=6 false sout(\n) 
		 *   i++
		 * i=3 false
		 */
		for (int i = 1; i <= x; i++) {
			for (int j = i; j <= i + 2; j++) {
				for (int k = j; k < x + 2; k++) {
					System.out.print(" ");
				}
				for (int l = j - 1; l >= 0; l--) {
					if (j==1) {
						System.out.print("* ");
					} else {
						System.out.print("^ ");
					}
				}
				System.out.println();
			}
		}

		for (int i = 1; i <= y; i++) {
			for (int j = 1; j < 3; j++) {
				System.out.print(" ");
			}
			for (int k = 3; k <= (x + 2) * 2 - 3; k++) {
				System.out.print("|");
			}
			System.out.println();
		}
	}
}

2. 增强for循环

for(包装类型 参数:集合的编译对象){

}

2.1 Collection接口

 代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo01 {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add("法外狂徒");
        collection.add("张伟");
        collection.add("马文才");
        
        Object[] objects = collection.toArray();
        for (int i = 0; i < collection.size(); i++) {
            System.out.println(objects[i]);
        }

        for (Object o : collection) {
            System.out.println(o);
        }

        Iterator<String> iterator = collection.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

    }
}

针对于集合的编译类型collection,上面的代码进行了三种方式的遍历。

2.2 List接口

代码示例:

import java.util.ArrayList;
import java.util.List;

public class Demo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);
        for (int i = 0; i < list.size(); i++) {
            //通过索引获取元素
            System.out.println(list.get(i));
        }
    }
}

List接口中存在get()方法,可以通过传入索引来返回元素。

3. 迭代器

需要先将集合的编译类型转换为iterator编译类型后才能使用

//正序输出

.hasNext()//判断光标下方是否还有值

.next()//返回光标下方的值,并将光标下移

//逆序输出

.hasPrevious()//判断光标上方是否还有值

.previous()//返回光标上方的值,并将光标上移

代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class Demo3 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);
        ListIterator<String> sli = list.listIterator();
        while (sli.hasNext()) {
            System.out.println(sli.next());
        }
        //此时光标已经在最下面了
        while (sli.hasPrevious()) {
            System.out.println(sli.previous());
        }

    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值