笔记day05

本文详细介绍了Java中的循环结构,包括for、while、do-while循环的语法、执行规律及注意事项,并通过实例代码展示了如何使用。此外,还讲解了Math.random()函数的用法,如何生成指定范围内的随机数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、循环结构

2、while循环

3、do-while循环

4、for循环

Math.random():获取随机数

1、循环结构

for循环;while循环;do-while循环

2、while循环

(1)语法结构:

    初始值;

  while(循环条件){

   //循环操作;

   //迭代部分

   }

(2)执行规律:

1)执行1次初始值操作

2)判断循环条件,如果循环条件满足,执行循环操作代码,循环操作执行完,进行迭代,迭代后再次去判断循环条件是否满足,循环条件不满足,则结束整个循环结构的执行,继续执行循环结构之后的代码

(3)注意:

1)初始值只执行1次

2)循环条件为布尔值,要么为true,要么为false

3)迭代部分的作用是改变循环条件的变量值,从而让其在某一时刻不满足循环条件,结束循环结构,如果没有迭代部分,容易出现死循环,要尽量避免使用死循环

(4)举例:

1) /*

 * 老师每天检查张浩的学习任务是否合格,

 * 如果不合格,则继续进行。老师给张浩安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分

 */

public class Demo03 {

public static void main(String[] args) {

Scanner input =new Scanner(System.in);

System.out.println("请输入张浩的学习任务是否合格:");

//初始值

String answer = input.next();

//只要学习任务不合格,就一直循环进行学习

while(answer.equals("不合格")){

System.out.println("上午阅读教材,学习理论部分,下午上机编程,掌握代码部分");

System.out.println("学习是否合格:");

answer = input.next();

}

System.out.println("继续努力");

      }

 }

2)循环输出1000-2000年之间的所有闰年

/*

 * 闰年的条件:

 * (1)能被4整除但是不能被100整除  普通闰年

 * (2)能被400整除   世纪闰年

 */

public class Demo05 {

public static void main(String[] args) {

//初始值

int year = 1000;

while(year<=2000){//循环条件

//判断year是不是闰年

if((year%4==0&&year%100!=0)||(year%400==0)){

System.out.println(year);

}

year++;//迭代部分

}

}

}

3、do-while循环

(1)语法结构:

   初始值;

   do{

   循环操作代码

   迭代;

   }while(循环条件);

(2)执行规律:

1)执行一次初始值代码

2)先执行一次循环操作和迭代,然后判断循环条件是否满足,如果循环条件满足,则继续执行循环操作和迭代;如果循环条件不满足,则结束整个do-while循环结构,执行do-while循环结构后面的代码

(3)注意:

1)do-while循环结构,是先执行一次循环操作,再判断循环条件,也就是说do-while循环至少会执行一次循环操作

2)while循环结构,是先判断循环条件,再根据循环条件的结果决定是否执行循环操作,如果第一次循环条件就不能满足,循环操作就一次都不执行

(4)举例

1)使用do-while循环输出1-100,每5个数字一行

public class Demo03 {

public static void main(String[] args) {

//初始值

int i =1;

do{

System.out.print(i+" ");

//在输出数据之后进行是否需要换行的判断:如果输出的这个数能被5整除,就换行

if(i%5==0){

System.out.println();

}

i++;

}while(i<=100);

}

}

2)使用do-while循环输出1000-2022之间所有的闰年,每5个年份一行

public class Demo04 {

public static void main(String[] args) {

// 使用do-while循环输出1000-2022之间所有的闰年,每5个年份一行

//创造一个变量用来统计闰年的个数

int count= 0;

int year = 1000;

do{

//判断年份是否是闰年

if(year%4==0&&year%100!=0||year%400==0){

System.out.print(year+" ");

count++;

//对count进行判断,判断其是不是5的倍数,如果是,就进行换行

if(count%5==0){

System.out.println();

}

}

year++;

}while(year<=2022);

}

}

4、for循环

(1)语法结构:

   for(初始值;循环条件;迭代部分){

   //循环操作代码

   }

(2)执行规律:

1)先执行一次初始值代码

2)判断循环条件是否满足,如果循环条件为true,则执行循环操作代码,执行完循环操作,进行迭代,迭代完再次进行循环条件判断,根据循环条件判断结果决定是否继续执行循环操作;如果循环条件为false,则结束整个循环结构,继续往下执行循环结构后面的代码

(3)注意:

for循环也是先判断循环条件再决定是否执行循环操作。如果循环条件第一次就不满足,循环操作一次都不会执行

(4)举例

1)

import java.util.Scanner;

public class Demo02 {

public static void main(String[] args) {

// 循环输入某同学S1结业考试的5门课成绩,并计算平均分

Scanner input = new Scanner(System.in);

System.out.println("输入学生姓名:");

String studentName = input.next();

// 声明一个变量用来存储学生成绩之和

double sum = 0;

for (int i = 1; i <= 5; i++) {

System.out.println("请输入5门课中第" + i + "门课的成绩:");

double score = input.nextDouble();

sum += score;

}

// 计算平均分

double avg = sum/5;

System.out.println(studentName+"的平均分是:"+avg);

}

}

2)

import java.util.Scanner;

public class Demo03 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("请输入一个值:");

int num = input.nextInt();

for(int i = 0,j=num;i<=num&&j>=0;i++,j--){

System.out.println(i+"+"+j+"="+num);

}

}

}

3)for循环常见问题

package com.bdqn.demo03;

public class Demo04 {

public static void main(String[] args) {

// for循环常见问题

//初始值一定要声明才能使用,可以在for循环之上声明,也可以在for循环()里声明

// int i =0;

// for (; i < 10; i++) {

// System.out.println("这是 " + i);

// }

//缺少循环条件,会进入死循环

// for(int i=0;;i++){

//       System.out.println("这是 "+i);

// }

//缺少迭代部分,如果循环条件满足,会进入死循环

// for(int i=0;i<10;){

//     System.out.println("这是 "+i);

     i++;

// }

//缺少初始值、循环条件、迭代部分,程序进入死循环

for(;;){

     System.out.println("这是测试");

}

}

}

Math.random():获取随机数

(1)Math.random():随机返回一个 [0.0,1.0) 之间的double类型的数据(左闭右开区间)

(2)如何获取[num1,num2)之间的随机整数(num2>num1)

int num = (int)(Math.random()*(num2-num1)+num1);

(3)举例

1)

public class Demo01 {

public static void main(String[] args) {

//获取随机数

//Math.random()随机返回一个[0.0,1.0)之间的double类型的数据

double num =Math.random();

System.out.println(num);

//对上面的代码进行变形,可以获取[0.0,10.0)之间的double类型的户数

double num2 =Math.random()*10;

System.out.println(num2);

//进一步变形,将上面的num2转换为int类型的数据

int num3 =(int)(Math.random()*10);

System.out.println(num3);

}

}

2)

public class Demo03 {

public static void main(String[] args) {

int num1 = (int)(Math.random()*10);

// 如何获取[29,51)之间的随机整数

int num2 = (int)(Math.random()*22+29);

System.out.println(num2);

// 如何获取[num1,num2)之间的随机整数(num2>num1)

// int num = (int)(Math.random()*(num2-num1)+num1);

//随机获取[38,85)之间的整数

int num3 = (int)(Math.random()*(85-38)+38);

System.out.println(num3);

}

}

3)

import java.util.Scanner;

public class Demo02 {

public static void main(String[] args) {

/*

 * 抽奖规则:会员号的百位数字等于产生的随机数字即为幸运会员

 */

//获取[0-10)之间的随机整数

int random = (int)(Math.random()*10);

System.out.println("随机数:"+random);

Scanner input =new Scanner(System.in);

System.out.println("请输入你的会员卡号:");

int cardId = input.nextInt();

System.out.println("你的会员卡号是:"+cardId);

//获取会员卡号的百位数字

int baiWei = cardId/100%10;

System.out.println("会员卡百位数字是:"+baiWei);

if(baiWei==random){

System.out.println("恭喜你,中奖了");

}else{

System.out.println("很遗憾,没能中奖");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值