初学者:如果你想把一串数输入数组,但是你又不确定输入的个数,那我们怎么定义这个数组?
我是这样定义的
可以,然后循环给数组赋值
for(int i=0;i<n;i++)
arr[i] = s.nextInt();
java有list可用
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("依次输入数字 end 结束");
List<Integer> intList = new ArrayList<>();
String number = sc.nextLine();
while (!"end".equals(number)){
intList.add(Integer.parseInt(number));
number=sc.nextLine();
}
Integer[] intArray = new Integer[intList.size()];
intList.toArray(intArray);
for (Integer integer : intArray) {
System.out.println(integer);
}
}
非常棒,很有探索精神,我正面回答:可以通过复制数组扩
例子如下:
public class Main {
public static void main(String[] args) {
Main main = new Main();
for(int i = 0; i < 50; i++){
main.addExpand(i);
}
main.printArr();
}
int size = 10;
int[] arr = new int[size];//假设初始大小是10
int idx = 0;
private void addExpand(int item){
if(idx == size){
expand();
}
arr[idx++]=item;
}
private void printArr(){
for(int i = 0; i < idx; i++){
System.out.print(arr[i]);
System.out.print(" ");
}
System.out.println();
}
private void expand(){
size = size*2;//假设扩到2倍
int [] copy = new int[size];
//复制,从arr索引0到copy索引0,arr索引1到copy索引1......,一直复制到arr.length个到copy
System.arraycopy(arr,0,copy,0,arr.length);
arr = copy;
}
}
我这属于ArrayList简单版,ArrayList集合类内部就是这样写的(扩容默认1.5倍)
如果用数组,需要先确定数组的大小才能使用。
对于不确定输入几个数。
1、定义一个较大长度的数组,记录一下输入的数的个数count。
后面操作数组,最大下标到count-1.
2、用集合。可以随意的向集合放不确定的数。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
}
}