Java——循環應用


循環練習

練習一:計算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);
         }
}

運行結果:LoopTest.jpg

練習二:計算水仙花數:三位數: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);
                            }
                   }
         }
}

運行結果:LoopTest_1.jpg

練習三:打印出大寫字母和小寫字母

/*
需求:打印大寫字母和小寫字母
思路:利用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);
         }
}

運行結果:CharIntDemo.jpg

數組方法練習(把功能寫進方法中)

練習一:數組遍歷打印,比如打印[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;
         }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章