代码
import java.util.Scanner;
public class Program01 {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
int[] arr = new int[1];
int i = 0;
while (true) {
int nu = input.nextInt();
if (nu == 0)
break;
arr[i] = nu;
arr = newArr(arr);
i++;
}
for (int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
}
private static int[] newArr(int[] oldArr) {
int newLength = oldArr.length + 1;
int[] _newArr = new int[newLength];
for (int i = 0; i < oldArr.length; i++) {
_newArr[i] = oldArr[i];
}
return _newArr;
}
}
分析代码
就像上面的情况,我们需要的是一个可变的数组,所以我们必须写一个可以改变数组容量的数组,但是我们知道 Java的数组是定容的,所以,我们只能动一些“歪脑筋”。也就是将老数组用新数组代替。
上面代码中 的newArr方法也就是起到这个作用。
先将数组长度加1,再定义新数组,将老数组赋值给新数组,最后返回新数组。