sssherryal 2016-11-06 15:17 采纳率: 33.3%
浏览 1236

用Java实现的背包集合为何在foreach循环报错?

错误信息:Type mismatch: cannot convert from element type Object to int
(但是我的迭代器返回的应该不是Object型)

源代码:
Bag类:
package cn.dbj.oop.Bag;

import java.util.Iterator;

public class Bag implements Iterable {
private item[] a;
private int capacity = 0;
private int max ;
public Bag (int size) {
a = (item[]) new Object[size];
max = size;
}

public item[] getA() {
    return a;
}

public Boolean isEmpty (){
    if(capacity == 0)
        return true;
    else return false;
}

public void add (item e) {
    if(capacity == max-1){
        System.out.println("The bag is FULL!");
        return;
    }
    a[capacity++] = e;
}

public void delete() {
    if(capacity == 0){
        System.out.println("The bag is EMPTY!");
        return;
    }
    a[capacity--] = null;
}

public int getCapacity() {
    return capacity;
}

public Iterator<item> iterator() {
    // TODO Auto-generated method stub
    return new ReverseBagArray();
}

public class ReverseBagArray implements Iterator<item> {

    int size = capacity;
    @Override
    public boolean hasNext() {
        // TODO Auto-generated method stub
        return size == 0 ;
    }

    @Override
    public item next() {
        // TODO Auto-generated method stub
        return a[size];
    }

    @Override
    public void remove() {
        // TODO Auto-generated method stub

    }

}

}

Test类:
package cn.dbj.oop.Bag;

public class Test {
public static void main(String[] args) {

    Bag<Integer> intbag = new Bag<Integer>(10);
    intbag.add(2);
    intbag.add(45);
    intbag.add(3);
    System.out.println(intbag.isEmpty());
    for(int i : intbag){
        System.out.print("This is:");
        System.out.println(i);
    }
    System.out.println("!!!");
}

另:如果我在foreach中用Object i,再强制转型成int,则测试结果是根本没有进入循环,这是为什么呢?

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-11-06 15:44
    关注
      for(Integer i : intbag)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?