//第一種聲明
//第一種聲明 int [] arr=new int[5]; //第二種聲明 int [] arr1=new int[]{5,3,8,1,9,11}; //或者 int [] arr2={5,3,8,1,9,11};
//聲明數組 int [] array=new int[3]; System.out.PRintln(array[3]); //最在元素下標為2,發生異常 數組下標越界Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
空指針
//聲明數組 int [] array=new int[3]; array=null; //將數組設置為null System.out.println(array[1]); //數組為空,發生空指針異常Exception in thread "main" java.lang.NullPointerException
package com.day04;/** * 數組的遍歷 * @author Administrator * */public class ArrayDemo1 { public static void main(String[] args) { //聲明數組 int [] array={5,8,1,2,6}; //遍歷 for(int i=0;i<array.length;i++){ System.out.println("array["+i+"]="+array[i]); } }}
結果:
array[0]=5array[1]=8array[2]=1array[3]=2array[4]=6
1.4、獲取數組元素的值package com.pb.demo1;import java.util.Scanner;/* * 輸入5個學生的成績,并求出最高分,最低分,平均分 */public class Demo5 { public static void main(String[] args) { //聲明一個掃描器類似的變量 Scanner input = new Scanner(System.in); //聲明整形數組 int [] scores=new int [5]; System.out.println("請輸入5個學生的成績:成績為整數"); //為數組賦值 for (int i = 0; i < scores.length; i++) { scores[i]=input.nextInt(); } //總成績 float sum=0; //最低分 int min=0; //最高分 int max=0; //平均分 float avg=0; //將第一個值賦為min和max,進行比較 min=scores[0]; max=scores[0]; for (int i = 0; i < scores.length; i++) { //總成績 sum=sum+scores[i]; //最低分 if(scores[i] < min){ min=scores[i]; } //最高分 if(scores[i]>max){ max=scores[i]; } } System.out.println("總成績:"+sum); System.out.println("最低分:"+min); System.out.println("最高低:"+max); System.out.println("平均分:"+sum/scores.length); }}
package com.day04;/** * 定義功能,用于打印數組中的元素,元素間用逗號隔開 * @author Denny * */public class ArrayDemo2 { public static void main(String[] args) { //聲明數組 int [] arr={3,6,8,1,9,2,68,98,83}; printArray(arr); } //定義方法實現用于打印數組中的元素,元素間用逗號隔開 public static void printArray(int [] arr){ for(int x=0;x<arr.length;x++){ if(x==0){ System.out.print("{"+arr[x]+","); }else if(x==arr.length-1){ System.out.print(arr[x]+"}"); }else{ System.out.print(arr[x]+","); } } }}
結果:
package com.day04;/** * 冒泡排序 * * @author Denny * */public class ArrayDemo4 { public static void main(String[] args) { int[] arr = { 5, 3, 1, 8, 4, 9, 11, 7 }; System.out.println("=======排序前======"); printArray(arr); System.out.println("/n=======排序后======"); bubbleSorte(arr); // 排序 printArray(arr); } // 冒泡排序 public static void bubbleSorte(int[] arr) { // 開始排序 for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - x - 1; y++) { // 開始比較 if (arr[y] > arr[y + 1]) { // 交換 int tmp = arr[y]; arr[y] = arr[y + 1]; arr[y + 1] = tmp; } } } } // 遍歷數組 public static void printArray(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i != arr.length - 1) { System.out.print(arr[i] + ","); } else { System.out.print(arr[i] + "]"); } } }}
package com.day04;/** * 選擇排序 * * @author Denny * */public class ArrayDemo5 { public static void main(String[] args) { int[] arr = { 5, 3, 1, 8, 4, 9, 11 ,7}; System.out.println("=======排序前======"); printArray(arr); System.out.println("/n=======排序后======"); selectSort(arr); //排序 printArray(arr); } // 選擇排序 public static void selectSort(int[] arry) { for (int i = 0; i < arry.length - 1; i++) { for (int j = i + 1; j < arry.length; j++) { // 1和2比 if (arry[i] > arry[j]) { // 交換 int tmp = arry[i]; arry[i] = arry[j]; arry[j] = tmp; } } } } // 遍歷數組 public static void printArray(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if(i!=arr.length-1){ System.out.print(arr[i] + ","); }else{ System.out.print(arr[i] + "]"); } } }}
package com.day04;import java.util.Arrays;/** * 二分法查找 * @author Denny * */public class ArrayDemo6 { public static void main(String[] args) { int[] arr = { 1,3,4,5,7,8,9,11}; //int index=getIndex(arr,11); //使用Arrays.sort排序 Arrays.sort(arr); //1,3,4,5,7,8,9,11 //二分法查找 //int index=halftSearch(arr,33); int index=halftSearch_2(arr,9); System.out.println("查找的index="+index); } //二分法查找,前題,要排序過的數組 //先排序 public static int halftSearch(int [] arr,int key){ //最小下標 int min=0; //最大下標 int max=arr.length-1; //中間下標 int mid=(min+max)/2; //循環 while(arr[mid]!=key){ if(key>arr[mid]){ min=mid+1; }else if(key<arr[mid]){ max=mid-1; } //重新計算中間值下標 mid=(min+max)/2; if(min>max){ return -1; } } return mid; } //二分法查找,前題,要排序過的數組第二種寫法 public static int halftSearch_2(int [] arr,int key){ //最小下標 int min=0; //最大下標 int max=arr.length-1; //中間下標 int mid ; //循環 while(min<=max){ //重新計算中間值下標 mid=(min+max)>>1; if(key>arr[mid]){ min=mid+1; }else if(key<arr[mid]){ max=mid-1; }else{ return mid; } } return -1; } //遍歷查找 public static int getIndex(int[] arr,int key){ int index=-1; //定義-1下標 for (int i = 0; i < arr.length; i++) { if(key==arr[i]){ index=i; } } return index;//返回下標變量 }}
package com.day04;/** * 有一個有序的數組,想要將一個元素插入到這個數組中, 還要保證這個數組是有序的 * * @author Denny 1.二分法查找到下標 * */public class ArrayDemo7 { public static void main(String[] args) { int arr[] = { 2, 4, 5, 7, 19, 32, 45 }; int index=getIndex(arr,35); System.out.println("index="+index); } //二分法查找,返回能插入的下標 public static int getIndex(int[] arr, int key) { int min = 0, max = arr.length - 1, mid; while (min <= max) { // 中間下標 mid = (min + max) >> 1; if (key > arr[mid]) { min = mid + 1; } else if (key < arr[mid]) { max = mid - 1; } else { return mid; } } return min; }}
package com.day04;public class ArrayTest1 { public static void main(String[] args) { toBin(6); toHex(60); } /* * 十進制轉換十六進制 * */ public static void toHex(int num) { StringBuffer sb = new StringBuffer(); for (int x = 0; x < 8; x++) { int tmp = num & 15; if (tmp > 9) { //System.out.println((char) (tmp - 10 + 'A')); sb.append((char) (tmp - 10 + 'A')); } else { //System.out.println(tmp); sb.append(tmp); } num=num>>>4; } System.out.println(sb.reverse()); } /* * 十進制轉換為二進制 */ public static void toBin(int num) { StringBuffer sb = new StringBuffer(); while (num > 0) { // System.out.println(num % 2); sb.append(num % 2); num /= 2; } System.out.println(sb.reverse()); }}
package com.day04;public class ArrayTest2 { public static void main(String[] args) { toHex(60); } /* * 0 1 2 3 4 5 6 7 8 9 A B C D E F --十六進制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 * 15 -----數組下標 查表法:將所有的元素臨時存儲起來,建立對應關系 每一次,&15后的值作為索引去查建立好的表,就可以找到對應的元素 * 這樣比-10+'A'簡單 這個表怎么建立? 可以通過數組的形式來定義 結果是反著的,想要正過來可以通過StringBuffer reerse功能 * 可以使用數組來完成 */ public static void toHex(int num) { // 十六進制數組 char[] ch = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; // 定義臨時容器數組 char[] arr = new char[8]; int pos=arr.length;//下標 while (num != 0) { int tmp = num & 15; // System.out.println(ch[tmp]); arr[--pos] = ch[tmp]; num = num >>> 4; } System.out.println("post="+pos); // 遍歷輸出 for (int i = pos; i <arr.length; i++) { System.out.print(arr[i] + " "); } }}
package com.day04;/** * 十進制 轉2進制 * @author Administrator * */public class ArrayTest3 { public static void main(String[] args) { toBin(-6); } /* * 十進制 轉2進制 */ public static void toBin(int num){ char [] ch={'0','1'}; //要查的表 //存儲數組 char[] bin=new char[32]; //下標指針 int pos=bin.length; while(num!=0){ int tmp=num&1; bin[--pos]=ch[tmp]; num=num>>>1; } //輸出 for (int i = pos; i < bin.length; i++) { System.out.print(bin[i]); } } }
最終完成package com.day04;/** * 轉換 * * @author Denny * */public class ArrayTest4 { public static void main(String[] args) { //toBin(-6); toOtc(60); //toHex(-60); } /* * 十進制---》二進制 */ public static void toBin(int num){ toTrans(num,1,1); } /* * 十進制---》八進制 */ public static void toOtc(int num){ toTrans(num,7,3); } /* * 十進制---》十六進制 */ public static void toHex(int num){ toTrans(num,15,4); } /* * 提供公有的轉換方法 num 要轉換的數 base與上的數如15,1,7, offset 移動的倍數 */ public static void toTrans(int num, int base, int offset) { if(num==0){ System.out.println(num); return; } // 十六進制數組 char[] ch = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; // 存儲轉換后的數組 char[] arr = new char[32]; int pos = arr.length; while (num != 0) { int tmp = num & base;// 取 arr[--pos] = ch[tmp]; // 查表取相對應的字符 num = num >>> offset; // 右移 } //遍歷輸出 for (int i = pos; i < arr.length; i++) { System.out.print(arr[i]); } }}
package com.day04;/** * 二維數組常用操作 * @author Denny * */public class ArrayTest5 { public static void main(String[] args) { int [] [] arr={{3,5,7,8,1},{2,1,6},{5,7,9}}; //遍歷 printArr(arr); } /* * 二維數組遍歷 */ public static void printArr(int [] [] array){ for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j]+" "); } System.out.println(); } }}
新聞熱點
疑難解答