Java中的数组
int[ ] arr={12,3,4,8,5,6,6,7,8,8,9,8}; int [ ] arr1=new int[ ]{12,3,4,8,5,6,6,4};
int[ ] arr=new int[5]; for (int i = 0; i < arr.length; i++) { System.out.println("数组第"+(i+1)+"个值为"+i); }
int[ ] arr={1,3,6,5,6,7,84,55,5}; for (int num:arr) { System.out.println(num); }
数组中常用来排序的两种方法
for(int i=0; i<arr.length; i++){ for(int j=i; j<arr.length; j++){ if(arr[i]>arr[j]){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }
for(int i=0; i<arr.length-1; i++){ for(int j=0; j<arr.length-1-i; j++){ if(arr[j]>arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }
int start = 0; // 默认起始坐标 int end = arr.length-1; // 默认结尾坐标 int index = -1; // 找不到默认index为-1 while(start<=end){ int middle = (start+end)/2; // 计算中间下标 if(num == arr[middle]){ index = middle; break; } if(num > arr[middle]){ start = middle + 1; } if(num < arr[middle]){ end = middle - 1; } } System.out.println(index); } }
Scanner in=new Scanner( System.in); double sum=0; double[ ] arr=new double[5]; for (int i = 0; i < arr.length; i++) { System.out.print("请输入第"+(i+1)+"笔购物金额:"); arr[i]=in.nextDouble(); sum+=arr[i]; } System.out.println("序号\t\t 金额"); for (int i = 0; i < arr.length; i++) { System.out.println((i+1)+"\t\t"+arr[i]); } System.out.println("总金额:"+sum ); }
Scanner in=new Scanner(System.in); int[] arr=new int[4]; System.out.println("请输入四家店的价格"); for (int i = 0; i <4; i++) { System.out.print("第"+(i+1)+"店的价格为:"); arr[i]=in.nextInt(); } for (int j = 0; j < arr.length-1; j++) { if (arr[j]<arr[j+1]) { arr[j+1]=arr[j]; }else { arr[j+1]=arr[j+1]; } }System.out.println("最低价格是:"+arr[3]); }
③将一个数组从小到大排列
int[] arr={56,45,99,82,91,81}; int max; int m; for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) { if (arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for (int a: arr) {
System.out.println(a);
}
}
}
④输入一个数字,在数组中查找,若有输出下标,若没有输出-1
Scanner in=new Scanner(System.in); int[] arr={12,34,46,68,32,35,75,48,25}; System.out.println("输入一个数字"); int sz=in.nextInt(); for (int i = 0; i < arr.length; i++) { if (sz==arr[i]) { System.out.println("数字下标为"+i); return; } } System.out.println("-1");
假定现有两个数组,分别为:
int[ ] arr1={3, 1, 23};
int[ ] arr2={27, 7, 2};
设计程序,将两个数组合并成一个数组,并按升序排列合并后的数组,输出合并前和合并后的数组信息
int[ ] arr1 = {3, 1, 23}; int[ ] arr2 = {27, 7, 2}; int[ ] arr = new int[arr1.length+arr2.length]; // 1. 声明一个数组,长度等于两个数组的长度和 for(int i=0; i<arr1.length; i++){ // 2. 遍历两个数组 arr[i] = arr1[i]; } for(int i=0; i<arr2.length; i++){ arr[arr1.length+i] = arr2[i]; } for(int i=0; i <arr.length-1; i++){ // 3. 对新数组排序 for(int j=0; j <arr.length-1-i; j++){ if( arr [ j ]>arr[ j+1 ]){ int temp = arr[ j ]; arr [ j ] = arr[ j+1 ]; arr[ j+1 ] = temp; } } } System.out.println(Arrays.toString(arr));
System.out.print("请输入一个数组:"); Scanner in = new Scanner(System.in); long num = in.nextLong(); long old = num; // 暂存num int count = 0; // num有几位,定义一个几位的数组。 求出num的位数 while(num>0){ num /= 10; count++; } int[] arr = new int[count]; count = 0; // 不断取出数字的每一位,依次放入数组中 while(old>0){ arr[count] = (int)old % 10; old /= 10; count ++; } for(int i=0,j=arr.length-1; i<=j ; i++,j--){ // 依次比较数组的首尾。 有任意一位不相等,就不是回文数 if(arr[i] != arr[j]){ System.out.println("不是回文数"); return; } } System.out.println("是回文数");
显示结果为
⑦ 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
// Scanner in=new Scanner(System.in); //设置输入数组 // int [] arr; // System.out.println("输入数组"); // for (int i = 0; i < arr.length; i++) { // int arr[i]=in.nextInt(); int [ ] arr = {5,3,7,1,0,6,9,2}; int max = arr[0] , maxIndex = 0; // 找出最大元素的下标 for(int i=0; i<arr.length; i++){ if(max < arr[i]){ max = arr[i]; maxIndex = i; } } if( maxIndex != 0 ){ int temp = arr[0]; arr[0] = arr[maxIndex]; arr[maxIndex] = temp; } int min = arr[0] , minIndex = 0; //找出最小元素的下标 for(int i=0; i<arr.length; i++){ if(min > arr[i]){ min = arr[i]; minIndex = i; } } if(minIndex != (arr.length-1)){ int temp = arr[arr.length-1]; arr[arr.length-1] = arr[minIndex]; arr[minIndex] = temp; } System.out.println(Arrays.toString(arr)); }
显示结果为