Java——循环应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); ????????????????????????????} ???????????????????} ?????????} }
运行结果:
练习三:打印出大写字母和小写字母
/* 需求:打印大写字母和小写字母 思路:利用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——循环应用的主要内容,如果未能解决你的问题,请参考以下文章