打印arraylist的内容时没有输出

时间:2014-04-22 23:16:23

标签: java

import java.util.ArrayList;
import java.util.Iterator;
/** 
* @author Stephanie Hoyt 
* @version April 10, 2014
*/
public class Purse
{
private ArrayList<MyCoins> coins;
private int total;
/**
 * Default constructor for objects of class Purse.
 */
public Purse()
{
    coins = new ArrayList<MyCoins>();
}

/**
 * Takes Coin as a parameter and adds Coin to the Purse.
 **/
public void add(int coinValue)
{
    coins.add(new MyCoins(coinValue));
    total += coinValue;
}

/**
 * 
 */
public int getTotal()
{
    return total;
}

/**
 * 
 */
public void showCoins()
{
    coins = new ArrayList<MyCoins>();
    Iterator<MyCoins> itr = coins.iterator();
    while(itr.hasNext())
        {
            MyCoins c = itr.next();
            System.out.println(c.getName());
        }

}
}

所以我的问题在于showCoins()方法。我想打印出ArrayList的内容,硬币。代码编译但是当我运行时没有任何反应。所有其他方法都运行正常。 这个类与另一个有关,我将在下面发布。

public class MyCoins
{
private String myName;
private int myValue;

/**
 * default constructor for MyCoins class.
 */
public MyCoins(String name, int value)
{
    myName = name;
    myValue = value;
}

/**
 * Non-default constructor for MyCoins class.
 */
public MyCoins(int value)
{
    myValue = value;
    if(value == 1)
        myName = new String("Penny");
    else if(value == 5)
        myName = new String("Nickel");
    else if(value == 10)
        myName = new String("Dime");
    else if(value == 25)
        myName = new String("Quarter");
    else
        throw new IllegalArgumentException("Enter the value of a US coin.");
}

/**
 * Returns the current value of coins as an integer.
 */
public int getValue()
{
    return myValue;
}

/**
 * Returns myName as a String.
 */
public String getName()
{
    return myName;
}
}

2 个答案:

答案 0 :(得分:1)

您创建了ArrayList但未添加任何内容。因此,获取迭代器并迭代迭代。所以没有什么可以打印的。

coins = new ArrayList<MyCoins>();
Iterator<MyCoins> itr = coins.iterator();

也许您正在尝试引用coins实例字段。在那种情况下,摆脱

coins = new ArrayList<MyCoins>();

答案 1 :(得分:1)

coins = new ArrayList<MyCoins>();方法中删除showCoins()。它用空列表替换当前钱包中的硬币列表。