for、switch、while循环及例子—for循环求偶数和,水仙花数,99乘法表、打印矩阵星星,三角星星
苟有恒,何必三更眠五更起; 最无益,莫过一日曝十日寒。
for循环
for循环是我们在实际开发中应用到的最多的循环, 它一般适用于循环次数固定的情况
初始化条件: 用来记录 循环的初始状态的. 即: 从哪开始循环
判断条件: 用来决定循环是否继续执行的, 条件成立, 则循环继续执行, 条件不成立, 整个循环就结束了
控制条件: 用来控制初始化条件变化的, 一般是每循环一次, 初始化条件+1
循环体: 需要用来重复做的事情(代码)
//for(初始化条件;判断条件;自增条件){
循环体;
}
eg:
for(int i =1;i<=3;i++){
System.out.println("循环体"+i);
}
执行流程
先执行初始化条件
然后执行判断条件, 看其结果是true, 还是false
如果是false, 则整个循环结束
如果是true, 则执行循环体
执行控制条件
返回第2步, 继续往下重复执行
eg
通过for循环, 打印10次"Hello World!".
参考代码
//需求: 打印10次HelloWorld
public class ForDemo01 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("Hello World!");
}
}
}
案例二: 打印数字
需求
通过for循环, 打印1~5之间的数字.
通过for循环, 打印5~1之间的数字.
参考代码
public class ForDemo02 {
public static void main(String[] args) {
//1. 通过for循环, 打印1~5之间的数字.
for (int i = 1; i <= 5 ; i++) {
System.out.println(i); } System.out.println("--------------"); //2. 通过for循环, 打印5~1之间的数字
for (int i = 5; i >= 1; i--) { System.out.println(i);
}
}}
案例三: 求和案例
需求
通过for循环, 获取1 ~ 5之间的数字之和.
参考代码
public class ForDemo03 {
public static void main(String[] args) {
*//1. 定义变量sum, 用来记录数据和.*
int sum = 0;
*//2. 通过for循环, 依次获取到1~5之间的数字.*
for (int i = 1; i <= 5; i++) {
*//3. 将获取到的数字, 累加给变量sum.*
sum += i;
}
System.out.println("1 - 5之间的数字之和是: " + sum);
}}
求偶数和
public class ForDemo04 {
public static void main(String[] args) {
//1. 定义变量sum, 用来记录数据和.
int sum = 0;
//2. 通过for循环, 依次获取到1 - 100之间的数字.
for (int i = 1; i <= 100; i++) {
//3. 判断当前遍历到的数字是否是偶数.
if (i % 2 == 0) {
//4. 走到这里, 说明是偶数, 累加给变量sum.
sum += i;
}
}
//5. 打印结果.
System.out.println("1 - 100之间的偶数之和是: " + sum);
}
}
细节: 求和变量必须定义到for循环的外边, 如果定义到for循环的内容, 则每次循环都会被重置.
获取到所有的水仙花数, 并将结果打印到控制台上.
解释:
水仙花数是一个3位数的整数.
该数字的各个位数立方和相加等于它本身.
例如: 153就是水仙花数, 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 = 153
参考代码
public class ForDemo05 {
public static void main(String[] args) {
int ge, shi, bai;
for (int i = 100; i < 1000; i++) {
ge = i / 1 % 10;
shi = i / 10 % 10;
bai = i / 100 % 10;
if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai)
System.out.println(i);
}
}
}
计数思想
package com.itheima.Array;
public class ArrayDemo02{
public static void main(String[] args){
int ge,shi,bai,count = 0;
for (int i = 100; i < 1000; i++) {
ge = i / 1 % 10;
shi = i / 10 % 10;
bai = i / 10 / 10 % 10;
if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai ) {
System.out.println(i);
count++;
}
}
System.out.println(count);
}
}
while循环
在不确定循环多少次的情况下使用while循环
打印十次HelloWorld
public static void main(String[] args){
int i = 0;
while(i<10){
System.out.println(i+"HelloWorld");
i++;
}
}
求和
获取1~100之间所有偶数和, 并将结果打印到控制台上
public static void main(String[] args){
int i = 0,sum=0;
while(i<=100) {
if (i % 2 == 0){
sum += i;
}
i++;
}
System.out.println(sum);
}
案例三: 珠穆朗玛峰
需求
⦁ 已知世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米)
⦁ 假如我有一张足够大的纸,它的厚度是0.1毫米
⦁ 请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
⦁ 即: 纸张的厚度 >= 珠穆朗玛峰的高度
public class while_demo_03 {
public static void main(String[] args) {
//1. 定义变量, 记录纸张的厚度.
double paper = 0.1;
//2. 定义变量, 记录珠峰的高度.
int zf = 8844430;
//3. 定义变量, 记录纸张的折叠次数.
int count = 0;
//4. 通过while循环实现, 获取折叠次数.
while (paper < zf) {
paper *= 2;
count++;
}
//5. 打印结果.
System.out.println("折叠次数为: " + count);
}
}
do—while
简单了解即可
do{
循环体;
}
while(判断条件)
打印HelloWorld
int i=1;
do{
System.out.println("Hello World! " + i);
}while(i<10);
三种循环之间的区别
do…while循环和其他两个循环之间的区别
do.while循环是先执行一次, 后判断.
而其他两个循环都是先执行判断条件, 然后决定是否执行循环体.
for循环和其他两个循环之间的区别
for循环执行结束后, 初始化条件就不能继续使用了.
而其他两个循环执行结束后, 初始化条件还可以继续使用.
死循环
for(;😉{循环体代码 }
while(true){循环体代码 } (常用)
do{循环体代码 }while(true);
break
终止循环,相当于跳出循环
e.g.(break)
打印10次HelloWorld, 当打印第五次的时候, 结束循环.
public static void main(String[] args){
for (int i = 0; i <100 ; i++) {
if(i==5){
break;
}
System.out.println(i);
}
}
continue
到continue终止本次循环,接着继续下次的循环。
e.g.(continue)
打印1~10之间, 所有不是3倍数的整数.
public static void main(String[] args){
for (int i = 0; i <10 ; i++) {
if(i%3==0){
continue;
}
System.out.println(i);
}
}
案例
综合案例1
打印2020年1月至2023年12月之间所有的月份, 格式为: XXXX年XX月
public static void main(String[] args){
for (int i = 2020; i <=2023; i++) { //这个打印年
for (int j = 1; j < 12; j++) { //这个打印月
System.out.println(i+"年"+j+"月");//输出年+月
}
//每年都分开
System.out.println("=============================");
}
}
综合案例2
在控制台打印一个3行5列的矩形星星序列, 具体格式如下:
public static void main(String[] args){
for (int i = 1; i <=5; i++) { //行
for (int j = 1; j <=3; j++) {
System.out.print("*"+"\t");//列
}
System.out.println();
}
}
打印倒三角形 (正直角三角只需要调换一个内层的for循环的值即可)
public static void main(String[] args){
for (int i = 1; i <=5; i++) {
for (int j = i; j <=5; j++) {//替换i或5
System.out.print("*"+"\t");//年
}
System.out.println();
}
}
99乘法表
public class ForForDemo08 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) { //外循环控制行
for (int j = 1; j <= i; j++) { //内循环控制列
System.out.print(j + " * " + i + " = " + i * j + "\t");
}
//内循环执行结束, 意味着一行打印完毕, 记得要换行.
System.out.println();
}
}
}
随机数
math.random() //随机生成0.0~1.0之间的数字。包左不报右类似[0,10)
生成五个随机数打印出来
public static void main(String[] args){
int num;
for (int i = 0; i < 5; i++) {
num = (int)(Math.random()*10+1);
System.out.println(num);
}
}
猜数字
⦁ 生成一个1-100之间的随机数, 让用户来猜
⦁ 如果猜的数字比生成的随机数大,提示你猜的数据大了
⦁ 如果猜的数字比生成的随机数小,提示你猜的数据小了
⦁ 如果猜的数字与生成的随机数相等,提示恭喜你猜中了
public static void main(String[] args) {
int guessNum = (int) (Math.random() * 100 + 1);
int inputNum = 0;
while (true) {
System.out.println("请录入您猜的数据(1-100): ");
inputNum = new Scanner(System.in).nextInt();
if (inputNum > guessNum) {
System.out.println("您猜的数字大了!");
} else if (inputNum < guessNum) {
System.out.println("您猜的数字小了!");
} else {
System.out.println("恭喜您, 猜对了, 请找班任领取奖品... 就业班晋级卡");
break;
}
}
}
到此javase的循环告一段落 下次写数组和方法、方法重载等,即将进入java的大门啦~