循环结构:while、do-while、for
一、while
while语句:
while(条件表达式){
执行语句
}
下面看具体实例
1.有1020个西瓜,第一天卖掉总数的一半后又多卖出两个
以后每天卖剩下的一半多两个,问几天以后能卖完?
public class T1 {
public static void main(String[] args) {
int day=0;
int num=1020;
while(num>0){
num=num/2-2;
day++;
}
System.out.println(day+"天后卖完");
}
}
2.任意输入一个整数(小于10位),输出它一共有多少位。
public class T4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数:");
int a=sc.nextInt();
int i=1;
while(a/10!=0){
a=a/10;
i++;
}
System.out.println(i);
}
}
二、do-while
do-while循环结构:
do{
执行语句
}while(条件判断);
下面看一些例子
1.斐波那契数列(有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对? 分析:兔子的规律为数列,1,1,2,3,5,8,13,21)
public class Ti3 {
public static void main(String[] args) {
int a=1,b=1;
int i=1;
do{
a=a+b;
b=a+b;
i++;
}while (i<=((12-2)/2));
System.out.println(b);
}
}
2.一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)
public class T8 {
public static void main(String[] args) {
double paper=0.08;
double mountain=8848130.0;
int time=0;
do{
paper*=2;
time++;
}while(paper<mountain);
System.out.println(time);
}
}
3.你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数
public class T10 {
public static void main(String[] args) {
int i=0,j=0;//j为奇数,i为偶数
int a=1;
Scanner sc=new Scanner(System.in);
System.out.println("请输入一组数字:");
do {
a=sc.nextInt();
if(a%2==0){
i++;
}else{
j++;
}
}while (a>0);
System.out.println("奇数为"+(j-1)+"偶数为"+i);
}
}
三、for
for(int i=0; i <N; i++)
{
…
}
1、初始化i=0
2、判断i是否小于N
3、执行花括号中内容(注意这里先执行循环体,再i++)
4、i++
1.计算1000以内所有不能被7整除的整数之和
public class T5 {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=1000;i++){
if(i%7!=0){
sum+=i;
}
}
System.out.println(sum);
}
}
2.本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是
public class T6 {
public static void main(String[] args) {
double m=10000.0;
for(double i=1;i<=5;i++){
m=m*1.003;
}
System.out.println(m);
}
}
3.从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 54321
public class T9 {
public static void main(String[] args) {
System.out.println("请输入一个数字:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int j=1;
for(int i=1;i<=a;i++){
j*=i;
}
System.out.println(j);
}
}
四、共同点及区别总结
1.语法:
~while循环:
while(条件){
//循环体
}
~do while循环:
do{
//循环体
}while(条件);
~for循环:
for(初始化;条件;迭代){
//循环体
}
2.执行顺序:
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行
3.适用情况:
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环