码迷,mamicode.com
首页 > 编程语言 > 详细

Java——循环应用

时间:2017-12-12 12:15:41      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:循环应用


循环练习

练习一:计算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——循环应用

标签:循环应用

原文地址:http://blog.51cto.com/13502869/2049669

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!