运行时异常,请老师指点

来源:3-14 删除宠物猫信息

小啊白兔

2020-12-06 15:11:20

# 具体遇到的问题
运行异常
# 报错信息的截图
http://img.mukewang.com/climg/5fcc83ab09cf010308110210.jpg# 相关课程内容截图

# 尝试过的解决思路和结果
做到了删除花花二代数据并重新输出,运行时异常
# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

package com.imooc.set;


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

//定义宠物猫对象

Cat huahua=new Cat("花花",12,"英国短毛猫");

Cat fanfan=new Cat("凡凡",3,"中华田园猫");

//将宠物猫对象放入HashSet中

Set<Cat> set=new HashSet<Cat>();

set.add(huahua);

set.add(fanfan);

//显示宠物猫信息

Iterator<Cat> it=set.iterator();

while(it.hasNext()) {

System.out.println(it.next());//输出的是地址信息,要在类中添加toString

}

//再添加一个与花花属性一样的猫

Cat huahua01=new Cat("花花",12,"英国短毛猫");

set.add(huahua01);

System.out.println("**********************");

System.out.println("添加重复数据后的宠物猫信息:");

it=set.iterator();

while(it.hasNext()) {

System.out.println(it.next());

}

System.out.println("**********************");

//重新插入一个新宠物猫

Cat huahua02=new Cat("花花二代",2,"英国短尾猫");

set.add(huahua02);

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;

Cat c=null;

it=set.iterator();

while(it.hasNext()) {

c=it.next();

if(c.getName().contentEquals("花花")) {

flag=true;//找到了

break;

}

}

if(flag) {

System.out.println("花花找到了!");

System.out.println(c);

}else {

System.out.println("花花没找到");

}

//删除花花二代的信息并输出结果

for(Cat cat:set) {

if("花花二代".equals(cat.getName())) {

set.remove(cat);

}

}

System.out.println("**********************");

System.out.println("删除后的结果为:");

for(Cat cat:set) {

System.out.println(cat);

}

  

}

}

=======================================

package com.imooc.set;


public class Cat {

private String name;

private int month;

private String species;

public Cat(String name, int month, String species) {

super();

this.name = name;

this.month = month;

this.species = species;

}

//get\set方法

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getMonth() {

return month;

}

public void setMonth(int month) {

this.month = month;

}

public String getSpecies() {

return species;

}

public void setSpecies(String species) {

this.species = species;

}

@Override

public String toString() {

//return "Cat [name=" + name + ", month=" + month + ", species=" + species + "]";

return "Cat [姓名=" + name + ", 年龄=" + month + ", 品种=" + species + "]";

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + month;

result = prime * result + ((name == null) ? 0 : name.hashCode());

result = prime * result + ((species == null) ? 0 : species.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

//对象是否相等,相等返回true,不用比较了属性

if(this==obj)

return true;

//判断obj是否为Cat类的对象,如果是强制转换,返回属性比较的结果    

if(obj.getClass()==Cat.class) {

Cat cat=(Cat)obj;

return cat.getName().equals(name)&&(cat.getMonth()==month)&&

(cat.getSpecies().equals(species));

}

return true;

}

}


写回答

1回答

好帮手慕小班

2020-12-06

同学你好,

java.util.ConcurrentModificationException这个异常出现的原因是在遍历集合时,对集合中的元素进行了修改。Java中是不允许一边遍历一遍进行修改集合中的元素,会出现数据的不一致性~

贴出代码中,在遍历过程中对数据进行了添加,最后就会报出这个错误。

http://img.mukewang.com/climg/5fcc8b240961fefa07630713.jpg

具体的解决办法,在视频的后续有具体讲解,比如:

http://img.mukewang.com/climg/5fcc8cf409d7db9a08070623.jpg

0

0 学习 · 16556 问题

查看课程