G帅T 2023-04-23 15:24 采纳率: 76%
浏览 21
已结题

java的迭代器遍历问题


package 案例;

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

class action {
    public static Scanner scanner = new Scanner(System.in);
    private String name;
    private String color;
    private String price;
    private String amount;
    public static Collection<action> collection = new ArrayList<action>();
    private int x;

    public action(String name, String color, String price, String amount) {
        this.name = name;
        this.color = color;
        this.price = price;
        this.amount = amount;
    }
public action() {
    }

    public String toString() {
        return "商品:" + name + "\t颜色:" + color + "\t价格:" + price + "\t数量:" + amount;
    }

    public void add() {
        String xString;
        System.out.println("是否要录入商品");
        xString = scanner.next();
        if (xString.equals("是")) {
            System.out.print("商品名称:");
            String name = scanner.next();
            System.out.print("   颜色:");
            String color = scanner.next();
            System.out.print("   价格:");
            String price = scanner.next();
            System.out.print("   数量:");
            String amount = scanner.next();
            action action = new action(name, color, price, amount);
            collection.add(action);
            System.out.println(name + "录入成功!");
        } else {
            System.out.println("返回系统首页!");
        }
    }

    public void show() {
        System.out.println("仓库所有商品信息:");
        for (Object object : collection) {
            System.out.println(object);
        }
    }

    public void delete() {
        Iterator<action> iterator = collection.iterator();
        System.out.println("删除商品的编号为:");
        x = scanner.nextInt();int i = 1;
        while (iterator.hasNext()) {
            if(i==x) {
                iterator.remove();
            }
            Object object= iterator.next();
            System.out.println(object);
            i++;
            
        }
    }
}

public class P146_61库存管理系统 {
    public static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        action action = new action();
        menu();
        while (true) {
            String string;
            System.out.println("输入选择的功能:");string = scanner.next();
            switch (string) {
            case "商品入库功能":
                action.add();
                break;
            case "商品显示功能":
                action.show();
                break;
            case "删除商品功能":
                action.delete();
                break;
            case "退出系统功能":
                System.exit(0);
            default:
                System.out.println("不存在该功能!");
                break;
            }
        }

    }

    public static void menu() {
        System.out.println("库存管理系统:");System.out.println("1.商品入库功能:");
        System.out.println("2.商品显示功能:");
        System.out.println("3.删除商品功能:");
    }
}

对于上面的delete方法中,我是想靠记录循环次数,在指定的循环位置删除对象数据,为啥会报错说我非法,对于迭代器自己的方法它应该是能预支的呀,为啥报错

img

img

  • 写回答

1条回答 默认 最新

  • 於黾 2023-04-23 15:33
    关注

    迭代过程中不可以修改长度

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 修改了问题 4月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分