这次通过编程遇到了一个问题:“要求是任意输入1到100的数,以0作为输入结束的标志。”
这意味着:
1· 数组要可以根据输入的数据改变大小
2· 可以判断最后输入位置上的数据为0
分别来解决:
1)先了解一下java数组的特性:
在java中的数组一旦被定义,数组的大小是不能改变的。
如: int[ ] a = new int[5];
或者: int[ ] a;
a = new int[5];
这意味着整型数组a的大小为5。
设a的初始值为{1,2 ,3,4,5}
这时,如果重新定义它的长度
如:a = new int[10];
数据将被清空。 数组 a 不是{1,2,3,4,5,0,0,0,0,0}
而是{0,0,0,0,0,0,0,0,0,0}
根据这些特性,来对数组a进行扩充:
1.要另外new一个新的数组b(一般要比数组a大);2.要将数组a的数据拷贝到数组b;3.将数组a的首地址指向数组b的首地址,即a = b;
代码如下:int[ ] b ; b = java.util.Arrays.copyOf(a, 20); a = b ;
这里用了Arrays类的copyOf方法,这个方法有两个参数,要说明一个数组作为拷贝的原本,要说明新的数组(数组b)的长度。
2)在java里从控制台读取数据,用的是Scanner类
import java.util.Scanner;
public static void main(String[ ] args){
Scanner cs = new Scanner(System.in);
int k = 0 ;
while(true){
a[k] = cs.nextInt();// 赋值
k++;
if(a[k]==0) // 判断
break;
}
}