增强型for循环错误异常

增强型for循环错误异常

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CatTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 定义宠物猫对象
		CatDemo2 huahua = new CatDemo2("花花", 12, "英短蓝猫");
		CatDemo2 fanfan = new CatDemo2("凡凡", 3, "中华花布");

		// 将宠物猫对象放入HashSet中
		Set<CatDemo2> set = new HashSet<CatDemo2>();
		set.add(huahua);
		set.add(fanfan);

		// 显示宠物猫信息
		Iterator<CatDemo2> it = set.iterator();
		System.out.println("======宠物猫信息=======");
		
		while (it.hasNext()) {
			System.out.println(it.next());
		}

		// 再添加一个与花花属性一样的猫
		CatDemo2 huahua01 = new CatDemo2("花花", 12, "英短蓝猫");
		set.add(huahua01);
		System.out.println("======添加重复数据的宠物猫后=====");
		it = set.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}
		// 重新插入一个新的宠物猫
		CatDemo2 huahua02 = new CatDemo2("花花儿子", 2, "英短蓝猫");
		set.add(huahua02);
		System.out.println("添加");
		it = set.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}

		System.out.println("===============通过对象名查找花花信息===============");

		if (set.contains(huahua)) {
			System.out.println("花花找到了!");
			System.out.println(huahua);
		} else {
			System.out.println("花花没找到了!");
		}
		// 在集合中使用名字查找花花的信息
		System.out.println("===============通过名字查找花花信息===============");

		boolean flag = false;
		CatDemo2 c = null;
		it = set.iterator();
		while (it.hasNext()) {
			c = it.next();
			if (c.getName().equals("花花")) {
				flag = true;// 找到了
				break;
			}
		}
		if (flag) {
			System.out.println("花花找到了");
			System.out.println(c);

		} else {
			System.out.println("花花没找到了");

		}
		// 删除花花二代的信息并重新输出
		for (CatDemo2 cat : set) {
			if ("花花儿子".equals(cat.getName())) {
				set.remove(cat);
			}
		}
		System.out.println("=================删除花花儿子后的数据=====================");
		for (CatDemo2 cat : set) {
			System.out.println(cat);
		}

	}

}

http://img1.sycdn.imooc.com/climg//5992589f0001c26d13400924.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

嗯对的,这样程序会报错,课程中已经给出了解决方法,在14:50左右。祝:学习愉快

  • 櫻絳_ 提问者 #1
    刚看完,hhh 添麻烦了。灰常感谢
    2017-08-15 10:23:49
  • 櫻絳_ 提问者 #2
    增强型for循环,是只能读取其元素,不能对元素进行修改删除操作的吗?
    2017-08-15 10:25:02
  • 櫻絳_ 提问者 #3
    非常感谢!
    2017-08-20 10:27:30
Tender10 2017-08-15 10:39:51

其实也是可以的,但是书写上还不如直接使用for循环遍历,如下所示通过增强for循环改变数组中元素的值:

int arr[] = new int[]{1,2,3,4,5};
int n = 0;
for (int i : arr) {
  if(i%2==0){
    arr[n]+=1;
    System.out.println(arr[n]);
  }
  n++;
}


  • 提问者 櫻絳_ #1
    Question1:只能修改的同时进行输出是吧? 如果在for结束后,再输出就还是原数组是吗? Question2: set.removeAll(set); set.clear(); 这两句代码效果是一样是吗?
    2017-08-15 11:11:09
  • Tender10 回复 提问者 櫻絳_ #2
    1、可以在for循环结束后进行输出,输出的是修改后的数组。 2、两句代码最终的效果是一样的。
    2017-08-15 11:58:38
  • 提问者 櫻絳_ 回复 Tender10 #3
    灰常灰常感谢
    2017-08-15 22:18:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师