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 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题