Java——循環應用
阿新 • • 發佈:2017-12-12
循環應用
循環練習
練習一:計算1~100之間奇數和的運算
/* 計算1~100之間奇數和的運算 思路:1、需要定義一個變量來初始化和並記錄和,sum ???????????2、計算1~100之間的數需要使用for循環來控制相加的次數 ???????????3、需要判斷1~100之間的奇數 ???????????4、將奇數的和進行相加,sum?=?sum?+?i ???????????5、打印出循環後相加的值 */ public?class?LoopTest{ ?????????public?static?void?main(String[]?args){ ???????????????????//定義一個變量來記錄和 ???????????????????int?sum?=?0; ???????????????????//使用for循環來遍歷1~100之間的數 ???????????????????for(int?i=1;i<=100;i++){ ????????????????????????????//判斷1~100之間的數哪些是奇數 ????????????????????????????if(i%2==1){ ?????????????????????????????????????//將判斷後的奇數值進行相加 ?????????????????????????????????????sum?+=?i; ????????????????????????????} ???????????????????} ???????????????????//打印出最後累計的和 ???????????????????System.out.println(sum); ?????????} }
運行結果:
練習二:計算水仙花數:三位數:100~999,比如1*1*1+2*2*2+3*3*3=123,找出有這種特性的數
/* 需求:找出水仙花數:三位數:100~999,比如1*1*1+2*2*2+3*3*3=123,找出有這種特性的數 思路:1、定義三個變量分別記錄個位,十位,百位上的數 ???????????2、使用for循環來遍歷100~999之間的數 ???????????3、將數進行拆分,需要用到除法、取模的運算 ???????????4、判斷個位、十位、百位三個數的立方相加是否是這個數的本身,如果是這個數就是水仙花數 ???????????5、打印出這些數 */ public?class?LoopTest_1{ ?????????public?static?void?main(String[]?args){ ???????????????????//定義個位數的變量 ???????????????????int?ge?=?0; ???????????????????//定義十位數的變量 ???????????????????int?shi?=?0; ???????????????????//定義百位數的變量 ???????????????????int?bai?=?0; ???????????????????//使用for循環來遍歷100~999之間的數 ???????????????????for(int?i=100;i<=999;i++){ ????????????????????????????//拆分百位上的數 ????????????????????????????bai?=?i?/?100; ????????????????????????????//拆分十位上的數 ????????????????????????????shi?=?i?/?10?%?10; ????????????????????????????//拆分個位數 ????????????????????????????ge?=?i?%?10; ????????????????????????????//判斷該數是否符合要求比如1*1*1+2*2*2+3*3*3=123 ????????????????????????????if(ge*ge*ge+shi*shi*shi+bai*bai*bai?==?i){ ?????????????????????????????????????System.out.println(i); ????????????????????????????} ???????????????????} ?????????} }
運行結果:
練習三:打印出大寫字母和小寫字母
/* 需求:打印大寫字母和小寫字母 思路:利用ASCII編碼表來進行打印 ?????????1、定義兩個變量來記錄字母a和A ?????????2、利用for循環來控制打印的次數 ?????????3、打印出數字對應得字母 ?????????4、每一次循環這個字符都要加一次 */ public?class?LoopTest_2{ ?????????public?static?void?main(String[]?args){ ???????????????????//定義兩個變量來記錄字母a和A ???????????????????char?daXie?=?‘A‘; ???????????????????char?xiaoXie?=?‘a‘; ???????????????????//利用for循環來控制打印的次數 ???????????????????for(int?i=0;i<26;i++){ ????????????????????????????System.out.println(xiaoXie+"??"+daXie); ????????????????????????????xiaoXie++; ????????????????????????????daXie++; ???????????????????} ?????????} }
練習四:打印九九乘法表
/* 需求:打印九九乘法表 思路:1、九九乘法表需要九行,每列加一個運算,需要for循環嵌套去實現 ???????????2、外層循環控制行數,一共九行,for(int?i=1;i<=9;i++) ???????????3、內層循環控制每行的個數,比如1*2=2,2*2=4可以把循環寫成for(int?j=1;j<=2;j++) ????????????????????它的第一個數字是逐漸遞增的,可以發現外層循環的變量i也是逐漸遞增的,第二個數字每一次 ????????????????????循環後都是不變的,所以可以把第一個數字定義成變量i,第二個就是循環後的變量j,他們兩個 ???????????????????相乘即可,內層循環可以寫成for(int?j=1;j<=i;j++) ???????????4、使用輸出語句打印出循環後效果,System.out.print(j+"*"+i+"="+j*i); */ public?class?LoopTest_3{ ?????????public?static?void?main(String[]?args){ ???????????????????print99(8); ?????????} ?????????public?static?void?print99(int?k){ ???????????????????//for循環嵌套進行遍歷,外層循環控制行數 ???????????????????for(int?i=1;i<=k;i++){ ????????????????????????????//內層循環控制每行的個數 ????????????????????????????for(int?j=1;j<=i;j++){ ?????????????????????????????????????//輸出兩個數相乘的效果 ?????????????????????????????????????System.out.print(j+"*"+i+"="+j*i+"???"); ????????????????????????????} ????????????????????????????//每次內層循環結束進行換行 ????????????????????????????System.out.println(); ???????????????????} ?????????} }
char類型和int類型可以相互轉換
/* char類型可以和int類型轉換 */ public?class?CharIntDemo{ ?????????public?static?void?main(String[]?args){ ???????????????????char?c?=?‘a‘; ???????????????????int?i?=?c?+?1; ???????????????????System.out.println(i); ???????????????????char?c1?=?(char)6; ???????????????????System.out.println(c1); ?????????} }
運行結果:
數組方法練習(把功能寫進方法中)
練習一:數組遍歷打印,比如打印[55,66,77,88,99]
/* 需求:打印出數組[55,66,77,88,99] 思路:1、定義出方法,ergodic(),返回值類型:void,參數列表:給我一個數組arr ???????????2、先打印出數組格式的左邊括號[,System.out.print("["); ???????????3、利用for循環進行遍歷數組,for(int?i=0;i<arr.length;i++) ???????????4、判斷數組是否遍歷到最後一個元素if(i==arr.length-1), ????????????????????就打印出最後沒有逗號的那一個元素System.out.println(arr[i]+"]"); ????????????????????否則就打印其他元素不換行加逗號System.out.print(arr[i]+","); ???????????5、在主方法中定義出這個數組,並調用這個數組 */ public?class?ArrayMethodTest{ ?????????public?static?void?main(String[]?args){ ???????????????????//5、在主方法中定義出這個數組,並調用這個數組 ???????????????????int[]?arr?=?{55,66,77,88,99}; ???????????????????ergodic(arr); ?????????} ?????????//1、定義出方法 ?????????public?static?void?ergodic(int[]?arr){ ???????????????????//2、先打印出數組格式的左邊括號[ ???????????????????System.out.print("["); ???????????????????//3、利用for循環進行遍歷數組 ???????????????????for(int?i=0;i<arr.length;i++){ ????????????????????????????//4、判斷數組是否遍歷到最後一個元素 ????????????????????????????if(i==arr.length-1){ ?????????????????????????????????????System.out.println(arr[i]+"]"); ????????????????????????????}else{ ?????????????????????????????????????System.out.print(arr[i]+","); ????????????????????????????} ???????????????????} ?????????} }
練習一:數組的逆序(將數組的元素進行逆向置換)
/* 需求:數組的逆序(將數組的元素進行逆向置換) 思路:1、將功能定義在方法內,displace(),返回值值類型:void,參數列表:給我一個數組int[]?arr ???????????2、使用for循環對數組進行遍歷,for(int?min?=?arr[0],int?max?=?arr[arr.length-1];min?>?min;min++,max--) ???????????3、將數據進行置換,需要用到第三方變量來記錄其中一個角標的值 ???????????4、定義出打印數組的功能 ???????????5、在主方法中定義一個數組,調用該方法 */ public?class?ArrayMethodTest_1{ ?????????public?static?void?main(String[]?args){ ???????????????????int[]?arr?=?{1,2,3,4,5}; ???????????????????displace(arr); ???????????????????ergodic(arr); ?????????} ?????????//1、將功能定義在方法內,displace() ?????????public?static?void?displace(int[]?arr){ ???????????????????//2、使用for循環對數組進行遍歷 ???????????????????for(int?min?=?0,max?=?arr.length-1;max?>?min;min++,max--){ ????????????????????????????//3、將數據進行置換,需要用到第三方變量來記錄其中一個角標的值 ????????????????????????????int?temp?=?arr[min]; ????????????????????????????arr[min]?=?arr[max]; ????????????????????????????arr[max]?=?temp; ???????????????????} ?????????} ?????????//4、定義出打印數組的功能 ?????????//1、定義出方法 ?????????public?static?void?ergodic(int[]?arr){ ???????????????????//2、先打印出數組格式的左邊括號[ ???????????????????System.out.print("["); ???????????????????//3、利用for循環進行遍歷數組 ???????????????????for(int?i=0;i<arr.length;i++){ ????????????????????????????//4、判斷數組是否遍歷到最後一個元素 ????????????????????????????if(i==arr.length-1){ ?????????????????????????????????????System.out.println(arr[i]+"]"); ????????????????????????????}else{ ?????????????????????????????????????System.out.print(arr[i]+","); ????????????????????????????} ???????????????????} ?????????} }
練習二:數組的選擇排序
/* 需求:數組的選擇排序 思路:1、定義一個方法selectSort(),返回值類型:void,參數列表:數組int[]?arr ???????????2、采用循環嵌套的方式,對數組進行遍歷,外層循環走一次for(int?i=0;i<arr.length.i++), ??????????????內層循環走一遍for(int?j?=?i+1;j<arr.length;j++),這時也就可以理解為第一個角標走一次, ??????????????其他角標依次走一遍 ???????????3、進行大小判斷,角標小的就放到索引為0的角標上if(arr[i]>arr[j]),進行位置的替換 ???????????4、給一個數組在主方法中調用這個方法 */ public?class?ArrayMethodTest_2{ ?????????public?static?void?main(String[]?args){ ???????????????????//4、給一個數組在主方法中調用這個方法 ???????????????????int[]?arr?=?{45,78,69,35,85,25}; ???????????????????selectSort(arr); ???????????????????ergodic(arr); ?????????} ?????????//1、定義一個方法selectSort() ?????????public?static?void?selectSort(int[]?arr){ ???????????????????//2、采用循環嵌套的方式,對數組進行遍歷 ???????????????????for(int?i=0;i<arr.length;i++){ ????????????????????????????for(int?j?=?i+1;j<arr.length;j++){ ?????????????????????????????????????//3、進行大小判斷 ?????????????????????????????????????if(arr[i]>arr[j]){ ???????????????????????????????????????????????//進行位置的替換 ???????????????????????????????????????????????int?temp?=?arr[i]; ???????????????????????????????????????????????arr[i]?=?arr[j]; ??????????????????????????????????????????????arr[j]?=?temp; ?????????????????????????????????????} ????????????????????????????} ???????????????????} ?????????} ?????????//打印數組的功能 ?????????//1、定義出方法 ?????????public?static?void?ergodic(int[]?arr){ ???????????????????//2、先打印出數組格式的左邊括號[ ???????????????????System.out.print("["); ???????????????????//3、利用for循環進行遍歷數組 ???????????????????for(int?i=0;i<arr.length;i++){ ????????????????????????????//4、判斷數組是否遍歷到最後一個元素 ????????????????????????????if(i==arr.length-1){ ?????????????????????????????????????System.out.println(arr[i]+"]"); ????????????????????????????}else{ ?????????????????????????????????????System.out.print(arr[i]+","); ????????????????????????????} ???????????????????} ?????????} }
練習三:數組的冒泡排序
/* 需求:數組的冒泡排序 思路:1、定義一個方法bubblesort(),返回值類型,void,參數列表int[]?arr ???????????2、使用for循環對數組進行遍歷,外層循環控制循環的次數for(int?i?=?0;i<arr.length;i++) ????????????????????冒泡排序是相鄰兩個元素進行比較排序,內循環控制它的兩個相鄰兩個元素的比較循環,如果j的 ??????????????索引為0,相鄰元素的索引就是0+1,j的索引每次循環必須從0索引開始比較,內循環的長度控制就是arr.length-i-1, ??????????????for(int?j=0;j<arr.length-i-1;j++) ???????????3、對元素進行大小判斷if(arr[j]>arr[j+1]),進行位置的置換 ???????????4、在主方法中定義一個數組,調用該方法 */ public?class?ArrayMethodTest_3{ ?????????public?static?void?main(String[]?args){ ???????????????????//?4、在主方法中定義一個數組,調用該方法 ???????????????????int[]?arr?=?{15,2,78,65,48,95,48}; ???????????????????bubblesort(arr); ???????????????????ergodic(arr); ?????????} ?????????//1、定義一個方法bubblesort() ?????????public?static?void?bubblesort(int[]?arr){ ???????????????????//2、使用for循環對數組進行遍歷 ???????????????????for(int?i?=?0;i<arr.length;i++){ ????????????????????????????for(int?j=0;j<arr.length-i-1;j++){ ?????????????????????????????????????//3、對元素進行大小判斷 ?????????????????????????????????????if(arr[j]>arr[j+1]){ ???????????????????????????????????????????????//位置置換 ???????????????????????????????????????????????int?temp?=?arr[j]; ???????????????????????????????????????????????arr[j]?=?arr[j+1]; ???????????????????????????????????????????????arr[j+1]?=?temp; ?????????????????????????????????????} ????????????????????????????} ???????????????????} ?????????} ?????????//打印數組的功能 ?????????//1、定義出方法 ?????????public?static?void?ergodic(int[]?arr){ ???????????????????//2、先打印出數組格式的左邊括號[ ???????????????????System.out.print("["); ???????????????????//3、利用for循環進行遍歷數組 ???????????????????for(int?i=0;i<arr.length;i++){ ????????????????????????????//4、判斷數組是否遍歷到最後一個元素 ????????????????????????????if(i==arr.length-1){ ?????????????????????????????????????System.out.println(arr[i]+"]"); ????????????????????????????}else{ ?????????????????????????????????????System.out.print(arr[i]+","); ????????????????????????????} ???????????????????} ?????????} }
練習四:折半查找法(前提:必須是有序數組)
/* 折半查找法 思路:1、定義一個方法binarySearch(),返回值類型:int,參數列表:int[]?arr,要查找的數int?key ???????????2、定義三個變量(指針)int?min?=?0,int?max?=?arr.length-1,int?mid?=?0 ???????????3、循環查找,小指針小於等於大指針while(min<=max)就進行循環查找,小指針大於大指針就說明該數組沒查找的這個數 ?????????????返回-1 ???????????4、進行判斷: ?????????????????????進行折半操作mid?=?(min+max)/2 ?????????????????????如果key>arr[mid],min?=?mid+1 ?????????????????????如果key<arr[mid],max?=?mid-1 ?????????????????????直到mid==min或者max,說明該值已經找到,返回該索引mid ???????????5、在主方法中定義數組,調用該方法 */ public?class?ArrayMethodTest_4{ ?????????public?static?void?main(String[]?args){ ???????????????????//5、在主方法中定義數組,調用該方法 ???????????????????int[]?arr?=?{1,2,3,4,5,6,7,8,9}; ???????????????????int?num?=?binarySearch(arr,5); ???????????????????System.out.println(num); ?????????} ?????????//1、定義一個方法binarySearch() ?????????public?static?int?binarySearch(int[]?arr,int?key){ ???????????????????//2、定義三個變量(指針) ???????????????????//小指針 ???????????????????int?min?=?0; ???????????????????//中間指針 ???????????????????int?mid?=?0; ???????????????????//大指針 ???????????????????int?max?=?arr.length-1; ???????????????????//3、循環查找,小指針小於等於大指針while(min<=max)就進行循環查找,小指針大於大指針就說明該數組沒查找的這個數返回-1 ???????????????????while(min<=max){ ????????????????????????????//?4、進行判斷 ????????????????????????????mid?=?(min+max)/2; ????????????????????????????if(key<arr[mid]){ ?????????????????????????????????????max?=?mid?-?1; ????????????????????????????}else?if(key>arr[mid]){ ?????????????????????????????????????min?=?mid?+?1; ????????????????????????????}else{ ?????????????????????????????????????return?mid; ????????????????????????????} ???????????????????} ???????????????????return?-1; ?????????} }
Java——循環應用