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 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试