目录
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("很遗憾,没能中奖");
}
}
}