java循环结构实验报告原理.docx
《java循环结构实验报告原理.docx》由会员分享,可在线阅读,更多相关《java循环结构实验报告原理.docx(8页珍藏版)》请在冰点文库上搜索。
java循环结构实验报告原理
竭诚为您提供优质文档/双击可除
java循环结构实验报告原理
篇一:
java循环结构的示例
示例讲解
1、最大公约数
问题:
求两个自然数的最大公约数。
这两个都是基础的数学问题,最大公约数指两个数字公共的约数中最大的,例如数字6的约数有1、2、3、6,数字9的约数有1、3、9,则数字6和数字9的公共约数有1和3,其中3是最大的公约数。
第一种思路:
从1开始循环,每次把符合要求(即同时是两个数字的约数)的值都存储起来,那么最后一个存储起来的就是最大的约数。
则实现的代码如下:
intn=6;
intm=9;
intresult=1;
for(inti=1;i if((n%i==0)
}
}
system.out.println(result);
使用该思路,每次都存储得到的公共约数,那么最后一个存储的就是两个数字的最大公约数。
第二种思路:
从两个数字中最小的数字开始循环,每次减1,那么第一次得到的公共约数就是所求的最大公约数。
则实现的代码如下:
intn=6;
intm=9;
intresult=n>m?
m:
n;
for(inti=result;i>=1;i--){
if((n%i==0)
break;//结束循环
}
}
system.out.println(result);
当然,解决这个问题,还有很多其它的方法,这里演示的这两种实现只是最自然的实现而已,采用类似的原理也可以求两个数字的最小公倍数的结构。
2、百元百鸡问题
问题描述:
每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元钱买100只鸡,请问有哪些可能?
说明:
每种鸡的数量都可以为零。
其实这个问题是数学上的组合问题,只需要把所有的情况列举出来,然后来判断是否符合要求即可。
这样的重复列举的问题,在程序上可以使用循环进行解决。
第一种思路:
当母鸡的数量为0时,公鸡的数量从0-100,当公鸡的数量每变化一次,小鸡的数量就从0变化到100,使用如下数值组合来描述这个思路:
母鸡数量公鸡数量小鸡数量
00从0变化到10001从0变化到10002从0变化到100……
10从0变化到100
11从0变化到100……
100100100
上面列举出了所有公鸡、母鸡和小鸡的数量都是0-100时的所有组合,总计是101的三次方种,这样的穷举结构直接存在嵌套,在程序实际实现时,通过循环之间的嵌套就可以实现,则实现的代码如下:
for(inti=0;i for(intj=0;j for(intk=0;k //判断数量是否为100,以及金额是否为100
if((i+j+k==100)
}
}
}
}
按照for语句的执行流程,循环变量变化1,则内部的循环执行一次,而在循环嵌套时,循环体又是一个新的循环,则该循环执行完成的一组循环。
这里通过循环的嵌套实现了所有数值的穷举。
在循环的内部,只需要按照题目要求判断一下数量和金额是否符合要求即可。
但是这样的代码效率比较差,可以通过简单的优化来提高程序的执行效率。
第二种思路:
由于母鸡每只的金额是3元,所以100元最多购买的母鸡数量是100/3=33只,同理100元最多购买的公鸡数量是25只,而按照100元100只的要求,小鸡的数量应该为100减去公鸡和母鸡的数量,这样代码就可以简化为如下的结构:
for(inti=0;i for(intj=0;j intk=100–i–j;//小鸡数量
//判断金额是否为100
if(i*3+j*4+k*0.5==100){
system.out.println(―母鸡数量:
‖+i+―公鸡数量:
‖+j+―小鸡数量‖+k);
}
}
}
}
这样,就可以大幅提高程序的执行效率,从而提高程序的执行速度。
当然该代码还可以继续进行优化,那(:
java循环结构实验报告原理)样可以再次提供程序的执行效率。
3、喝汽水问题
问题:
共有1000瓶汽水,每喝完后一瓶得到的一个空瓶子,每3个空瓶子又能换1瓶汽水,喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩余多少个空瓶子?
这个问题其实是个比较典型的递推问题,每3个空瓶都可以再换1瓶新的汽水,这样一直递推下去,直到最后不能换到汽水为止。
第一种思路:
每次喝一瓶,每有三个空瓶子就去换一瓶新的汽水,直到最后没有汽水可以喝为止。
在程序中记忆汽水的数量和空瓶子的数量即可。
则实现的代码如下:
intnum=1000;//汽水数量
intdrinknum=0;//喝掉的汽水数量
intemptynum=0;//空瓶子的数量
while(num>0){//有汽水可以喝
num--;//喝掉一瓶
emptynum++;//空瓶子数量增加1
drinknum++;//喝掉的汽水数量增加1
if(emptynum==3){//有3个空瓶子,则去换
num++;//汽水数量增加1
emptynum=0;//空瓶子数量清零
}
}
system.out.println(―总共喝掉瓶数:
‖+drinknum);
system.out.println(―剩余空瓶子数:
‖+emptynum);
执行该程序,输出结果如下:
总共喝掉瓶数:
1499剩余空瓶子数:
2在该代码中,每次循环喝掉一瓶汽水,则汽水数量减少1,空瓶子数增加1,喝掉的总汽水瓶数增加1,每次判断空瓶子的数量是否达到3,如果达到3则换1瓶汽水,同时空瓶子的数量变为零。
这种思路比较直观,但是循环的次数比较多,所以就有了下面的逻辑实现。
第二种思路:
一次把所有的汽水喝完,获得所有的空瓶子,再全部换成汽水,然后再一次全部喝完,再获得所有的空瓶子,依次类推,直到没有汽水可喝为止。
则实现的代码如下:
intnum=1000;//汽水数量
intdrinknum=0;//喝掉的汽水数量
intemptynum=0;//空瓶子的数量
while(num>0){//有汽水可以喝
drinknum+=num;//喝掉所有的汽水
emptynum+=num;//空瓶子数量等于上次剩余的加上这次喝掉的数量num=emptynum/3;//兑换的汽水数量
emptynum-=num*3;//本次兑换剩余的空瓶子数量
}
system.out.println(―总共喝掉瓶数:
‖+drinknum);
system.out.println(―剩余空瓶子数:
‖+emptynum);
在该代码中,每次喝掉所有的汽水,也就是num瓶,则喝掉的总瓶数每次增加num,因为每次都可能剩余空瓶子(不足3个的),则总的空瓶子数量是上次空瓶子数量加上本次喝掉的num瓶。
接着是对话汽水,则每次可以兑换的汽水数量是空瓶子的数量的1/3,注意这里是整数除法,而本次兑换剩余的空瓶子数量是原来的空瓶子数量减去兑换得到汽水数量的3倍,这就是一次循环所完成的功能,依次类推即可解决该问题。
4、水仙花数
问题:
水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3×3×3+7×7×7+0×0×0=370,请输出所有的水仙花数。
该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。
实现思路:
循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断3个数字的立方和是否等于自身。
则实现的代码如下所示:
篇二:
java循环结构实例
循环结构就是为了解决重复代码或者是有规律的代码。
1.为什么需要循环结构?
凤姐要谢添说100句我爱你。
2.什么是while循环结构?
基本语法:
循环三要素:
1.循环条件
2.执行的代码块
3.改变循环变量
永远不会退出的循环叫做死循环。
4.循环案例
4.1谢添的女朋友让他说100句我爱你
4.2打印1-100之间所有的数
4.3打印1-100之间所有的偶数
4.4打印100–200之间所有能被3或者7整除的数
4.5计算1+2+3+...+100的和
4.6计算1+3+5+...+99的和
4.7输入一个数字,计算从1到这个数字之间所有数字的和
4.8求出从1加到100时,总和刚好超过3000时,那个数的值是多少?
4.9统计200-300之间能被7整除的数的个数
篇三:
JAVA基本语法实验报告
JAVA基本语法实验报告
姓名:
刘青斌班级:
软件1201班学号20XX1534指导老师:
邓泓课程名称:
JAVA程序设计实验
一、实验名称
Java基本语法
二、实验目的
1、了解Java的数据类型
2、掌握各种变量的声明方式
3、理解运算符的优先级
4、掌握java基本数据类型。
运算符与表达式、数组的使用方法
5、理解Java程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序方法
三、实验环境
windows7、JDK1.6与eclipse3.5
四、实验内容
1)声明不同数据类型的变量
2)使用关系运算符和逻辑运算符
3)使用表达式语句与复合语句
4)使用选择语句
5)使用循环语句
1、for循环语句练习
2、while循环语句练习
3、do…while循环语句练习
五、代码分析
1.声明不同数据类型变量的程序
publicclassshujuleixing{
publicstaticvoidmain(stringargs[]){
byteb=0x55;//定义数据类型及初始化
shorts=0x55ff;
inti=1000000;
longl=0xffffL;
charc=a;
floatf=0.23F;
doubled=0.7e-3;
booleanb=true;
strings="这是字符串类数据类型";
system.out.println("字节型变量b="+b);//逐个输出system.out.println("短整型变量s="+s);
system.out.println("整型变量i="+i);
system.out.println("长整型变量l="+l);
system.out.println("字符型变量c="+c);
system.out.println("浮点型变量f="+f);
system.out.println("双精度变量d="+d);
system.out.println("布尔型变量b="+b);
system.out.println("字符串类对象s="+s);
}
}
2.关系运算符和逻辑运算符的程序
classyunsuanfu{
publicstaticvoidmain(stringargs[]){inta=25,b=20,e=3,f=0;booleand=a 1
}if(f!
=0system.out.println("因为f值为0,所以输出f="+f);else}
3.使用表达式语句与复合语句
包含表达式语句程序
classbiaodashiyuju{
}publicstaticvoidmain(string[]args){intk,i=3,j=4;k=20*8/4+i+j*i;system.out.println("表达式(20*8/4+i+j*i)="+k);}
包含复合语句程序
classfuheyuju{
}publicstaticvoidmain(stringargs[]){intk,i=3,j=4;k=i+j;system.out.println("在复合块外的输出k="+k);{floatf;f=j+4.5F;i++;system.out.println("在复合块内的输出f="+f);system.out.println("在复合块内的输出k="+k);}system.out.println("在复合块外的输出i="+i);}
4.使用循环语句
使用if...else语句
publicclassxuanzeyuju1{
publicstaticvoidmain(stringargs[]){booleanleap;intyear=20XX;if((year%4==0elsesystem.out.println(year+"年不是闰年");year=20XX;//方法2if(year%4!
=0)leap=false;leap=true;leap=false;leap=true;elseif(year%100!
=0)elseif(year%400!
=0)elseif(leap==true)system.out.println(year+"年是闰年");elsesystem.out.println(year+"年不是闰年");year=2050;//方法3if(year%4==0){if(year%100==0){if(year%400==0)leap=true;leap=false;else}elseleap=false;}elseleap=false;if(leap==true)system.out.println(year+"年是闰年");elsesystem.out.println(year+"年不是闰年");}
使用switch语句
classxuanzeyuju2{
publicstaticvoidmain(stringargs[]){intc=38;
switch(c //判断温度在哪个区间段case1:
//c 3
}}case3:
system.out.println(""+c+"℃有点热。
");default:
system.out.println(""+c+"℃太热了!
开空调。
");}
for循环语句
classxunhuanyuju1{
}publicstaticvoidmain(stringargs[]){}inth,c;system.out.println("摄氏温度华氏温度");for(c=0;c while循环语句
importjava.io.*;
classxunhuanyuju2{
publicstaticvoidmain(stringargs[])throwsIoexception{charch;system.out.println("按1/2/3数字键可得大奖!
");system.out.println("按空格键后回车可退出循环操作.");while((ch=(char)system.in.read())!
=){//当输入不等于’’时执行循环//判断所获奖项system.in.skip
(2);//跳过回车键switch(ch){case1:
system.out.println("恭喜你得大奖,一辆汽车!
");break;system.out.println("不错呀,你得到一台笔记本电脑!
");break;system.out.println("没有白来,你得到一台冰箱!
");break;case2:
case3:
default:
system.out.println("真不幸,你没有奖品!
下次再来吧。
");}
4