for循环和while循环

一、for循环

for(初始化条件;条件判断语句;条件控制语句){

        循环体语句

}

执行流程:

1、首次执行初始部分(仅一次)。

2、对条件判断语句(布尔表达式)进行判断,结果为true,则执行逻辑代码。

3、本次执行完毕后,执行条件控制语句,再次判断,结果仍旧为true,则再次执行逻辑代码(循环体语句)。

4、直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。

以下插入案例:

//打印1-10

public class Demo01{
    public static void main(String[] args){
        for(int i=1;i<11;i++){
            System.out.println(i);
        }
    }
}
经典案例1

public class Demo02{
    public static void main(Stirng[] args){
        //外循环控制行数
        for(int i=1;i<5;i++){
            //内循环控制列数
            for(int j=1;j<i+1;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

经典案例1结果为:*

                                  **

                                  ***

                                  ****

for循环打印类似图案,要记住:外层控制层数,内层控制列数。

经典案例2

public class Demo03{
    public static void main(String[] args){
        for(int i=1;i<5;i++){
            for(int j=1;j<5-i-1;j++){
                System.out.print(" ");
            }
            for(int j=1;j<i+1;j++){
                System.out.print("*");
            }
        }
    }
}

经典案例2结果为:   (1个空格)   *

                                     (2个空格)  **

                                   (3个空格)   ***

                                  (没有空格) ****

二、while循环

while(布尔表达式){

        循环体语句

        条件控制语句

}

执行流程:

1、先对布尔表达式进行判断,结果为true,则执行循环体语句。

2、本次执行完毕后,再次进行判断,若结果仍旧为true,则再次执行循环体语句。

3、直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。

do{

        循环体语句

}while(布尔表达式);

执行流程:

1、先执行一次循环操作之后,再进行布尔表达式的判断。

2、如果结果为true,则再次执行循环操作。

3、如果结果为false,才会退出循环结构,执行后续代码。

以下插入案例:

//生成随机数,打印随机数并打印1-100之间比随机数大的奇数

import java.util.Random;
public class Demo04{
    public static void main(String[] args){
        Random ran=new Random();
        int num=ran.nextInt(100)+1;//取值范围[1,101)
        System.out.println("随机数:"+num);
        
        int i=1;
        while(i<101){
            if(i>num && i&2!=0){
                System.out.println(i);
            }
            i++
        }
    }
}
//我想存款过百万,月收入15k,每个月存8k,问多久完成梦想?

public class Demo08{
	public static void main(String[] args){
		//存款
		int money = 0;
		//月份
		int month = 0;
		while(money < 1000){
			//存钱
			money += 8;
			//月份+1
			month++;
		}
		System.out.println("存款百万需要:"+month+"个月");
	}
}

下面小编制作了一个数字游戏:

import java.util.*;
public class Test05{
	public static void main(String[] args){
		int max=100;//最大值
		int min=1;//最小值
		int guess=0;//猜的数字
		
		Scanner sc=new Scanner(System.in);
		Random ran=new Random();
		int num=ran.nextInt(98)+2; //随机数 随机生成范围[2,100)之间的数
		
		do{
			System.out.println("请在"+min+"到"+max+"之间猜一个数");
			guess=sc.nextInt();//获取用户的数据
			if(guess<=min || guess>=max){//获取用户猜测的数是否在最大或最小值
				System.out.println("输入有误");
				continue;
			}
			if(guess>num){
				max=guess;//比随机数大,改变猜的数为最大值
			}else if(guess<num){
				min=guess;//比随机数小,改变猜的数为最小值
			}
		}while(guess!=num);
		System.out.println("恭喜你中奖,随机数为"+num);
	}
}

三、关于循环的周期

 

public class Demo03{
    public static void main(String[] args){
        //变量的生命周期,在循环里定义的变量,循环结束则销毁
        for(int i=1;i<11;i++){
        
        }
        System.out.println(i);//报错
    }
}
public class Demo04{
    public static void main(Stirng[] args){
        int i=0;//生命周期为main方法
        for(i=1;<i<11;i++){
        //循环结束时i为11
        }
        System.out.println(i);//11
    }
}

 四、关于循环的习题

//我想存款过百万,月收入15k,每个月存8k,问多久完成梦想?

public class Demo08{
    public static void main(String[] args){
        int money = 0;
        int month = 0;
        while(money<1000?){
            money+=8;
            month++;
        }
        System.out.println("存款百万需要:"+month+"个月");
    }
}

//百万存款,每个月固定存8k,从第二个月起,每个月多存500,问多久完成梦想?

public class Demo09{
    public static void main(String[] args){
        double money = 0;//固定存款
        int month = 0;//月份
        double addMoney = 0;//额外多存的金额
        
        while(money<1000){
            money =  money + 8 + addMoney;//随着月份增长一共存了多少钱
            month++;//月份+1
            addMoney+=0.5;//每月额外多存500
        }    
        System.out.println("存款百万需要:"+month+"个月");
    }
}

注意:

1、首先从题目中获取有用的变量,此题有用的变量是money和month,第0个月时变量均为0

2、思考问题每个月重复对应的工作,选择运用循环来完成

3、注意循环语句里必须包含的变量是存款和月份,注意两者前后顺序

4、最后在循环体外输出语句

 

//打印九九乘法表

public class Homework{
    public static void main(String[] ags){
        for(int i=1;i<10;i++){
            for(int j=1;j<i+1;j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

 解题思路:

1、题目思路应该从打印*(经典案例1)中得出,因为九九乘法表由数字组成,所以只需要从打印的内容入手

2、观察九九乘法表的规律,第一列左边第一个数为1,由于内循环控制列,因此打印的第一个数为j,第二个数为i

3、思考此题,有那些字符串是不需要变动的,“*”(乘号)和“=”(等号)是不需要变动,因此要加入字符串表示

4、打印出来的表比较紧凑,因此需要插入一个水平制表符

分享一道挺有意思的题:(两种解题方法)

//输入正整数,判断是否为素数(只能被自身和1整除的数)

imoport java.util.Scanner;
public class Demo{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int num;
        while(true){
            System.out.println("请输入正整数");
            num=sc.nextInt();
            if(num<1){
                System.out.println("输入有误");//输入有误,往下执行false,直接跳回while循环
            }else if(num==1){
                System.out.println(num+"不是素数");
                break;//跳出while循环,往下没代码,程序结束
            }else{    //此时num>1
                for(int i=2;i<num;i++){
                    if(num%i==0){     //判断是否能被整除
                        System.out.println(num+"不是素数");
                        return;//结束方法
                    }
                }
                System.out.println(num+"是素数");
                break;
            }
        }
    }
}
import java.util.Scanner;
public class Homework1{
	public static void main(String[] args){
		System.out.println("请输入一个正整数");
		Scanner sc=new Scanner(System.in);
		int num=sc.nextInt();
		if(num>0){
			if((num%num==0 && num%1==0) && num!=1){
				System.out.println("不是素数");
			}else{
					System.out.println("是素数");
			}
		}else if(num<=0){
				System.out.println("输入有误,请重新输入正整数");
		}
	}		
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值