Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ArrayList的越界异常_Java_Indexoutofboundsexception - Fatal编程技术网

Java 使用ArrayList的越界异常

Java 使用ArrayList的越界异常,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我不知道为什么我会得到一个出界的例外,请有人帮助,这真的很烦人我,因为我真的想知道发生了什么 公共类忠诚卡名单 { 私人ArrayList忠诚者 /** * */ public LoyaltyCardList() { loyaltyCards = new ArrayList <LoyaltyCard> (); } /** * */ public void addLoyaltyCard(LoyaltyCard newLoyaltyCard) { loyal

我不知道为什么我会得到一个出界的例外,请有人帮助,这真的很烦人我,因为我真的想知道发生了什么

公共类忠诚卡名单 { 私人ArrayList忠诚者

/**
 * 
 */
public LoyaltyCardList()
{
    loyaltyCards = new ArrayList <LoyaltyCard> ();
}

/**
 * 
 */
public void addLoyaltyCard(LoyaltyCard newLoyaltyCard)
{
    loyaltyCards.add(newLoyaltyCard);
}

public void getAllLoyaltyCards()
{
    int index = 0;
    while(index <= getNumberOfLoyaltyCards())
    {
        loyaltyCards.get(index).printCustomerDetails();
        index++;
    }
}

public void getLoyaltyCard(int LoyaltyCardEntry)
{
    if(LoyaltyCardEntry < 0)
    {
        System.out.println("Negative Entry: " +LoyaltyCardEntry);
    }
    else if(LoyaltyCardEntry < getNumberOfLoyaltyCards())
    {
        loyaltyCards.get(LoyaltyCardEntry).printCustomerDetails();
    }
    else
    {
        System.out.println("No Such Entry:" + LoyaltyCardEntry);
    }
}

public int getNumberOfLoyaltyCards()
{
    return loyaltyCards.size();
}
/**
* 
*/
公众忠诚度CardList()
{
忠诚卡=新ArrayList();
}
/**
* 
*/
公共无效添加忠诚卡(忠诚卡新忠诚卡)
{
忠诚卡。添加(新忠诚卡);
}
公开作废所有忠诚卡()
{
int指数=0;
而(指数变化)

System.out.println(LoyaltyCards);


此时,您正在尝试打印列表本身。

您打印的是LoyaltyCards类,而不是
loyaltyCard
实例

for ( LoyaltyCard loyaltyCard : LoyaltyCards)
{
    System.out.println(loyaltyCard);
}

您还应该确保在您的LoyaltyCard类中有一个适当的toString()重写,否则它可能不会转换为所需的格式

您的代码不会返回任何内容。Java代码区分大小写…
LoyaltyCards!=LoyaltyCards
这对toString()有效吗:@override public String toString(){return LoyaltyCards;}这取决于您希望toString返回的内容,通常是字段,例如,return“[”+field1“],[“+field2+”]”。如果您使用的是eclipse,则可以转到源代码生成toString()我刚刚意识到,我不需要获得列表的大小,就可以从中打印任何内容,而且我也不太确定toString是如何工作的。
for ( LoyaltyCard loyaltyCard : LoyaltyCards)
{
    System.out.println(loyaltyCard);
}