一维数组
数组是相同数据类型的多个元素的容器,元素按线性顺序排列。
所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”)。
数组的操作其实就是对下标的控制,可以通过下标方式访问数组中每个元素。
1 2 3
| 数据类型[] 数组名= new 数据类型[ 元素个数 ]; 或 数据类型 数组名[] = new 数据类型[ 元素个数 ];
|
调用数组的length属性可以获取数组的长度:int len = arr.length;
可以通过下标的方式访问数组中的每一个元素。需要注意的是:数组的下标 从0开始,对于长度为n的数组,下标的范围是0-n-1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Scanner input = new Scanner(System.in);
int[] ns = new int[15];
int i; for(i=0; i<ns.length; i++){ System.out.print("请输入第"+ (i+1) +"个数: "); ns[i] = input.nextInt(); }
for(i=0; i<ns.length; i++ ){ System.out.print("ns["+i+"]=" + ns[i] +"\t"); }
|
声明数组同时赋予初始值,方式1 – 完整版
1 2 3
| 数据类型[] 数组名 = new 数据类型[]{值1, 值2, 值3, ... ... , 值N};
int[] ns = new int[]{ 10, 20, 30, 40, 50};
|
声明数组同时赋予初始值,方式2 – 简化版
1 2 3
| 数组类型[] 数组名 = {值1, 值2,值3, ... ... , 值N};
int[] ns = { 10, 20, 30, 40, 50};
|
一维数组常见算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
int[] ns = {-1,-35,-24,-7,-6,-95,-28,-47,-56,-73};
int max = ns[0];
int i; for( i=0 ; i<ns.length; i++){ if( ns[i] > max ){ max = ns[i]; } } System.out.println("最大值是:"+max);
int min = ns[0]; for( i=0 ; i<ns.length; i++){ if( ns[i] < min ){ min= ns[i]; } } System.out.println("最小值是:"+min);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Scanner input = new Scanner(System.in);
int[] ns= { 8,1,6,3,2,7,9 }; int i;
System.out.println("删除元素前>>>"); for( i=0; i<ns.length; i++){ System.out.print("ns["+i+"]="+ns[i]+"\t"); }
System.out.print("\n请输入您要删除的数据:"); int delNum = input.nextInt();
for( i=0; i<ns.length; i++){ if( ns[i] == delNum) break; }
if( i==ns.length) System.out.println(delNum+"不在数组存储数据内!"); else{ int delIndex = i; for( ; delIndex<ns.length-1; delIndex++ ){ ns[ delIndex ] = ns[ delIndex+1 ]; } ns[ ns.length-1 ] =0; System.out.println("删除元素后>>>"); for( i=0; i<ns.length-1; i++){ System.out.print("ns["+i+"]="+ns[i]+"\t"); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Scanner input = new Scanner(System.in); int[] ms = {1,3,5,7,11, 0 }; int i; System.out.println("--【插入数据前】------------------------------------------------------------"); for(i=0; i<ms.length-1; i++){ System.out.print("ms["+i+"]="+ms[i]+"\t"); } System.out.println(""); System.out.print("请输入新数据:"); int newNum = input.nextInt(); for( i=0; i<ms.length; i++){ if( ms[i] >= newNum ) break; } int charIndex = i==ms.length? i-1 : i; int end; for( end=ms.length-1; end>charIndex; end--){ ms[end] = ms[end-1]; } ms[charIndex] = newNum;
System.out.println("--【插入数据后】------------------------------------------------------------"); for(i=0; i<ms.length; i++){ System.out.print("ms["+i+"]="+ms[i]+"\t"); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Scanner input = new Scanner(System.in);
String[] names = {"aa","bb","CC","dd","ee"}; System.out.println("修改前-----------------------------"); int i; for(i=0; i<names.length; i++){ System.out.print("names["+i+"]="+ names[i] +"\t"); } System.out.println("");
System.out.print("请输入名称:"); String oldName = input.next();
System.out.print("请输入新名称:"); String newName = input.next();
for(i=0; i<names.length; i++){ if( oldName.equals(names[i]) ){ break; } }
if( i<names.length ){ names[i] = newName; System.out.println("修改后"); for(i=0; i<names.length; i++){ System.out.print("names["+i+"]="+ names[i] +"\t"); } }else{ System.out.println("您输入的元素不存在!"); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Scanner input = new Scanner(System.in); System.out.print("请输入一个整数:"); int n = input.nextInt();
int[] ci = {0,0,0,0, 0,0,0,0, 0,0};
int yu;
while(n!=0){ yu = n%10; ci[ yu ] ++; n=n/10; } System.out.println("数0\t数1\t数2\t数3\t数4\t数5\t数6\t数7\t数8\t数9\t"); int i; for(i=0; i<ci.length; i++){ System.out.print(ci[i]+"次\t"); }
|