打印有问题(java)

时间:2016-10-14 08:34:24

标签: java arrays numbers

我在更改后打印数组时遇到问题。代码应该包含一个数组,然后我插入一个应该成为索引号的数字(本例4)。然后获取该数字并移动到数组的后面,而所有其他数字在数组中向上移动一个索引以填充空白点。出于某种原因,它不允许我在进行更改后打印数组。

location.reload

3 个答案:

答案 0 :(得分:1)

1。无限循环

由于您的代码中包含无限循环,因此您无法打印任何内容:

while(k < a.length) {
    a[k] = a[k] - 1;
}

如果条件k < a.lengthtrue,则它始终为true,因为您永远不会在循环中更改其状态,换句话说k永远不会在此循环中修改它仅在外部修改,a.length也不会更改。

2。 ArrayIndexOutOfBoundsException

代码中的第二个问题是a[a.length] = temp;,如果到达,则会抛出ArrayIndexOutOfBoundsException因为数组的索引从0变为a.length - 1

3。新代码SendaAftast

此外,您的方法SendaAftast似乎没有正确编写,据我了解您的背景,它应该是这样的:

public static int SendaAftast(int a[], int i) {
    int temp = a[i];
    // Move everything from i to a.length - 2   
    for(int k = i; k < a.length - 1; k++) {
        a[k] = a[k + 1];
    }
    // Set the new value of the last element of the array
    a[a.length - 1] = temp;
    return a[i];
}

或者更快System.arraycopy(src, srcPos, dest, destPos, length)

public static int SendaAftast(int a[], int i) {
    int temp = a[i];
    // Move everything from i to a.length - 2   
    System.arraycopy(a, i + 1, a, i, a.length - 1 - i);
    // Set the new value of the last element of the array
    a[a.length - 1] = temp;
    return a[i];
}

4。如何打印数组?

要打印数组,您必须先将其转换为String并且最简单的方法是使用Arrays.toString(myArray),因此您可以像这样打印:

System.out.println(Arrays.toString(a));

答案 1 :(得分:0)

public static int SendaAftast(int a[], int i) {
    int temp = a[i];
    for (int k = i; k < a.length-1; k++) {
        a[k] = a[k+1] ;
    }
    a[a.length - 1] = temp;
    return a[i];
}

你的SendaAftast应该是这样的。内部while循环是无用的,也是无限循环导致程序无法打印的原因。变量'a'也不能通过它自己的大小来索引,因为数组中的计数从0开始 - a.length-1,因此要获得数组的最后一个值,你应该使用[a.length-1]而不是a [则为a.length]。

答案 2 :(得分:-2)

更改行:

a[k] = a[k] - 1;

a[k] = a[k-1];

再见!