为什么我的toString方法在java中的元素数组中返回null?

时间:2014-09-18 01:18:10

标签: java arrays null tostring

我是一个包含" a b c d e"的数组。 然后我使用反向方法将数组中的元素交换为" e d c b a"

我尝试使用此toString方法打印出数组中包含的项目:

public String toString()
{
    String s = "";
    if(isEmpty())
    {
        s = "List is empty";
    }
    for(int i = 0; i < numItems; i++)
    {
        s += items[i] + " ";
    }//end for
    return s;
}//end of toString

字符串s出现了&#34; null e d c b&#34;

我不知道为什么,但我认为必须将s初始化为&#34;&#34;。

如果有帮助,这是我的反向方法:

public void reverseList()
{
    for(int i = 0; i < items.length/2; i++)
    {
        Object temp = items[i];
        items[i] = items[items.length-i-1];
        items[items.length-i-1] = temp;
    }//end for
    System.out.println("List reversed");
}//end of reverseList

这是数组的add方法:

public void add(int index, Object item)
throws  ListIndexOutOfBoundsException
{
    if (numItems > items.length)//fixes implementaion error
    {
        throw new ListException("ListException on add");
    }  // end if
    if (index >= 0 && index <= numItems)
    {
        // make room for new element by shifting all items at
        // positions >= index toward the end of the
        // list (no shift if index == numItems+1)
        for (int pos = numItems-1; pos >= index; pos--)
        {
            items[pos+1] = items[pos];
        } // end for
        // insert new item
        items[index] = item;
        numItems++;
        System.out.println("Item " + item + " inserted into position " + index + " in the list.");
    }
    else
    {
        System.out.println("Position specified is out of range!");
    }  // end if
} //end add

谢谢!

2 个答案:

答案 0 :(得分:1)

问题很可能是你的反向交换,而不是你的toString方法,因为反向交换已经正确获得了EDCB,但是如果用一个空的偏移了。

对不起,我的拼写向后测试失败了Q_Q

答案 1 :(得分:0)

将s初始化为“”不会导致您为项目[0]输出null。导致此输出的原因是您使用的reverse()方法是错误的。