为了账号安全,请及时绑定邮箱和手机立即绑定

Java——循环应用

标签:
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);         }}

运行结果:

练习二:计算水仙花数:三位数: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);         }}

运行结果:

数组方法练习(把功能写进方法中)

练习一:数组遍历打印,比如打印[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;         }}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消