数组练习题
题目(1,2是进阶)
1.输入1到100之间的任意整数,然后计算这些整数中每个数出现的次数。
例如
输入
2,20,32,18,
输出
0---->1次,1---->1次,2---->3次,3---->1次,8---->1次
2.输入10个个位整数,去掉重复数字,并由大到小排序
3.有两个整数型数组,长度相同,输入数组各项,完成输入后,判断两个数组的每个数组位置的值是否相同,如果都相同,则输出true,反之则输出false
4.手动输入一个长度为10的数组,判断数组中是否存在四个连续相等的数值,如果存在则输出true,反之输出false
5.手动输入两个数组,将两个数组整合成为一个数组,并由大到小进行排序。
程序
/* date:2021.08.05;
* editor:陆双
* 一维数组二维数组练习题
*/
@Test public void homework1() { System.out.print("请输入0-100间的任意整数:"); String s=new Scanner(System.in).next(); String[] arr=s.split(","); int[] res={0,0,0,0,0,0,0,0,0,0}; for(int i=0;i) { int resi=Integer.parseInt(arr[i]); if(resi>0&&resi<10)//如果是一位数字,直接取模(不然如果也取余就会多增加很多零的个数) { int a=resi%10; switch (a) { case 0: case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9: res[a]++; break; default: break; } } else if(resi<100)//如果是两位数字,需要取模,取余 { int a=resi%10; int b=resi/10; switch (a) { case 0: case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9: res[a]++; break; default: break; } switch (b) { case 0: case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9: res[b]++; break; default: break; } } else { System.out.println("输入数字不在范围0-100之间!"); } } for(int i=0;i<10;i++) { System.out.println(i+"-->"+res[i]+"次"); } } @Test public void homework2() { Scanner s=new Scanner(System.in); int[] arr=new int[10]; for(int i=0;i<10;i++) { System.out.print("请输入整数:"); arr[i]=s.nextInt(); } int[] res=new int[arr.length]; int count=0; for(int i=0;i //如果有相同的元素,除了第一个其他相同的都赋值为一个固定的666,如果遍历时候发现元素是666,不做判断,继续下一个循环 { if(arr[i]!=666) { for(int j=i+1;j ) { if(arr[i]==arr[j]) arr[j]=666; else if(j==(arr.length-1)) { res[count]=arr[i]; count++; } } } } res=Arrays.copyOf(res, count); // for(int i=0;i //第二种方法,两两判断(这种比上面的复杂度高一些) // { // if(arr[i]!=arr[i+1]) // { // for(int j=0;j =s.nextInt(); } for(int i=0;i// { // if(arr[i]==res[j]) // { // break; // } // else // { // if(j==res.length-1){ // res=Arrays.copyOf(res, res.length+1); // res[res.length-1]=arr[i]; // // break; // } // } // } // } // else // { // continue; // } // } // if(arr[length-1]) // for(int j=0;j =s.nextInt(); } System.out.println(); System.out.println("请输入第2个数组:"); for(int j=0;j//判断最后一位 // { // if(arr[arr.length-1]==res[j]) // { // break; // } // else // { // res=Arrays.copyOf(res, res.length+1); // res[res.length-1]=arr[arr.length-1]; // break; // } // } // for(int i=0;i 输出检验 { System.out.print(res[i]); if(i!=res.length-1) { System.out.print(","); } } Arrays.sort(res); System.out.println(); for(int i=res.length-1;i>=0;i--)//排序 { System.out.print(res[i]); if(i!=0) { System.out.print(","); } } } @Test public void homework3() { Scanner s=new Scanner(System.in); int[] a=new int[5]; int[] b=new int[5]; boolean c=true; System.out.println("请输入第1个数组:"); for(int j=0;j// ) { a[j] ) { b[j] ) { if(a[i]==b[i]) { continue; } else { c=false; break; } } if(c) { System.out.println("true"); } else { System.out.println("false"); } } @Test public void homework4() { Scanner s=new Scanner(System.in); int[] arr=new int[10]; for(int i=0;i<10;i++) { System.out.println("请输入第"+i+"个数字"); int num=s.nextInt(); arr[i]=num; } int count=0; for(int i=0;i ) { boolean a=arr[i]==arr[i+1]; boolean b=arr[i+1]==arr[i+2]; boolean c=arr[i+2]==arr[i+3]; if((a&b)&c) { System.out.println("存在"); } else { count++; } if(count==7)//? { System.out.println("不存在"); } } } @Test public void homework5() { Scanner s=new Scanner(System.in); int[] a=new int[3]; int[] b=new int[4]; System.out.println("请你先输入第一个数组:");//输入一个数组 for(int i=0;i<3;i++) { System.out.print("第"+(i+1)+"个:"); a[i]=s.nextInt(); } System.out.println("请你再输入第二个数组:");//输入另一个数组 for(int i=0;i<4;i++) { System.out.print("第"+(i+1)+"个:"); b[i]=s.nextInt(); } int temp=a.length; a=Arrays.copyOf(a,a.length+b.length); //System.out.println(a.length); for(int i=0;i //粘贴 { a[i+temp]=b[i]; } System.out.print("输出合并之后结果:"); for(int i=0;i //粘贴之后全部输出检查结果 { System.out.print(a[i]); if(i!=a.length-1) { System.out.print(","); } } Arrays.sort(a); System.out.print("\n排序之后:"); for(int i=a.length-1;i>=0;i--)//排序 { System.out.print(a[i]); if(i!=0){ System.out.print(","); } } }