1. 程式人生 > >大資料之JAVA基礎(五):迴圈和陣列方法練習

大資料之JAVA基礎(五):迴圈和陣列方法練習

案例1:編寫 1+3+5+7+......+99的值 /* * 求1-99的基數和 */ public static void fun01() { int i = 1; int sum = 0; for(;i<100;i+=2) { sum += i; } System.out.println("0-99基數和: "+ sum); }案例2:求所有的水仙花數(100-999之間,每位數字立方之和等於該3位數本身。如153 = 1*1*1 + 3*3*3 + 5*5*5/* * 輸出所有的水仙花數 */public static void func02() { for(int i = 100;i<1000;i++)
{ int bai = i / 100 % 10; int shi = i / 10 % 10; int ge = i % 10; if(bai * bai *bai + shi *shi*shi + ge*ge*ge == i) { System.out.println(i); } } }案例3: 利用for迴圈列印26個大寫26個小寫英文字母 /* * 列印大小寫英文字母 */ public static void func03() { //A-Z : 65 - 91 //a-z : 97 - 122 for(int i=97;i<123;i++) { if(i>='a' && i<='z' || i>= 'A' && i<='Z') System.out.println((char)i); } }案例4:列印99乘法表
/* * 列印99乘法表 */ public static void func04() { for (int i = 1; i <10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + " = " + i*j); System.out.print(" "); } System.out.println(); } }案例5:編寫陣列的通用列印方法,例如列印(“【1,2,3,4,5】”)/* * 陣列通用列印方法 */ public static void func05(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] + ","); } System.out.print(']'); }案例6:實現陣列的逆序
/* * 陣列逆序 * 思想:首位和末位交換,然後首位 + 1,末位 -1 ,再次交換,以此類推,直到首位大於或者等於末位 */ public static void func06(int [] arr) { int start = 0; // 開始索引 int end = arr.length - 1; //末尾索引 for(start = 0 ; start <= end ; start ++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } for (int i : arr) { System.out.println(i); } }案例7:陣列的氣泡排序 /* * 陣列的氣泡排序(從小到大) * 思想:外層i從0位置開始,內層j從其後一位(i+1)開始,比較(arr.length - 1 - i)次,進行比較和交換 * */ public static void func07(int [] arr) { for (int i = 0; i < arr.length - 1; i++) { for(int j = i + 1; j < arr.length - 1 - i ; j ++) { if(arr[i] > arr[j] ) { int temp = arr[i]; arr[i] = arr[j]; arr[j] =temp; } } } for (int i : arr) { System.out.println(i); } }案例8:有序陣列的折半查詢 /* * 有序陣列的折半查詢 */ public static int func08(int [] arr,int search) { int min = 0; //最小索引 int max = arr.length - 1; //最大索引 int mid = (max + min) /2; //折半 while(arr[mid] != search) { if(arr[mid] > search) { max = mid - 1; } else { min = mid + 1; } mid = (max + min) /2; //折半 if(min > max) { return -1; } } return mid; }