具有可调整数组大小的toString方法

时间:2015-02-09 05:33:59

标签: java arrays tostring

我看过的每一个消息来源,我都不了解,似乎没有应用,或者使用像数组列表这样的东西。我不熟悉那些。所以我想使用一个基本的toString方法打印出数组的索引以及与变量' length'相比较时保持的数字。 - num.length可以是不同的,因为它是底层数组的物理大小。底部的for循环有它的要点。我试图用可调整大小的数组中的int来打印索引(0-infinite)。变量'长度'不是数组的实际大小,而是包含0的工作大小,直到添加另一个单元格。 ' strang'变量只是我尝试过的东西。我不认为它会起作用,但是当我被困住时,我似乎没有其他任何帮助。

public class XArray
{
    private int[] nums;
    private int length;

    public XArray()
    {
        nums = new int[10];
        length = 0;
    }

    public void add(int value)
    {
        if (length == nums.length)
        {
            int[] nums2 = new int[(int)(nums.length * 1.2)];
            for ( int i = length - 1; i >= 0; i-- )
            {
                nums2[i] = nums[i];
            }
            nums = nums2;
        }
        nums[length] = value;
        length++;
    }

    public void set(int index, int value)
    {
        if (index < length)
        {
            nums[index] = value;
        }
    }

    public int get(int index)
    {
        return nums[index];
    }

    public int size()
    {
        return length;
    }

    public void remove()
    {
        nums[length - 1] = 0;
        length--;
    }

    public String toString(int[] nums)
    {
        String strang = "l";
        for ( int i = 0 ; i < length; i++ )
        {
            strang = "Index: " + i + " Number: " + nums[i] + ", ";
        }
        return strang;
    }
}

2 个答案:

答案 0 :(得分:1)

您需要在循环的每次迭代中连接值......类似于......

public String toString(int[] nums)
{
    StringBuilder strang = new StringBuilder(length);
    for ( int i = 0 ; i < length; i++ )
    {
        strang.append("Index: ").append(i).append(" Number: ").append(nums[i]).append(", ");
    }
    return strang.toString();
}

一般来说,toString不应该使用参数,numslength之间可能存在差异,这可能会导致问题

@Override
public String toString() {...

这样,您将打印对象num数组的内容,该对象与length

在上下文中相关联

答案 1 :(得分:0)

您可能打算在该方法中使用+=而不是=(尽管许多人会告诉您使用StringBuilder,因为连续的连接(如果没有被编译器优化)将会产生大量垃圾。)

另外,请不要传递nums!您想使用字段nums;传入参数将使用参数。 real toString没有参数(并且应该有@Override注释)。