Java for循环嵌套
一、需求
需求1:打印以下图形
****
****
****
for(int i = 0;i<3;i++){//控制行数
for(int j = 0;j<4;j++){//控制列数
System.out.print("*");
}
System.out.println();
}
需求2:打印以下图形
*
**
***
****
*****
for(int i = 0;i<5;i++){
for(int j = 0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
需求3:打印以下图形
*****
****
***
**
*
or(int i = 0;i<5;i++){
for(int j = 0;j<5-i;j++){
System.out.print("*");
}
System.out.println();
}
需求4:打印以下图形
*****
****
***
**
*
for(int i = 0;i<5;i++){
for(int k = 0;k<i;k++){
System.out.print(" ");
}
for(int j = 0;j<5-i;j++){
System.out.print("*");
}
System.out.println();
}
需求5:打印以下图形
*
***
*****
*******
for(int i = 0;i<4;i++){
for(int k = 0;k<3-i;k++){
System.out.print(" ");
}
for(int j = 0;j<i*2+1;j++){
System.out.print("*");
}
System.out.println();
需求6:打印以下图形
*
* *
* *
*******
for(int i = 0;i<4;i++){
for(int k = 0;k<3-i;k++){
System.out.print(" ");
}
for(int j = 0;j<i*2+1;j++){
//第一行||最后一行||每行的第一列||每行的最后一列
if(i==0 || i==3 || j==0 || j==i*2){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
需求7:打印以下图形
*******
*****
***
*
for(int i = 0;i<4;i++){
for(int k = 0;k<i;k++){
System.out.print(" ");
}
for(int j = 0;j<7-i*2;j++){
System.out.print("*");
}
System.out.println();
}
需求8:打印以下图形
*******
* *
* *
*
for(int i = 0;i<4;i++){
for(int k = 0;k<i;k++){
System.out.print(" ");
}
for(int j = 0;j<7-i*2;j++){
//第一行||最后一行||每行的第一列||每行的最后一列
if(i==0 || i==3 || j==0 || j==7-i*2-1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
需求9:打印九九乘法表
for(int i = 1;i<=9;i++){
for(int j = 1;j<=i;j++){
System.out.print(j + "x" + i + "=" + (i*j) + "\t");
}
System.out.println();
}
for(int i = 1;i<=9;i++){
for(int k = 1;k<i;k++){
System.out.print("\t"); //如果用idea编辑需要多加一个"\t"
}
for(int j = i;j<=9;j++){
System.out.print(i + "x" + j + "=" + (i*j) + "\t");
}
System.out.println();
}
二、While循环
2.1语法结构
while(表达式){
…代码块/循环体…
}
2.2理解
表达式的结果必须是boolean
true — 执行代码块
false – 跳出循环
2.3死循环
while(true){
System.out.println(“用良心做教育”);
}
while循环变形记:使用while循环去描述for循环(输出5遍”用良心做教育”)
//总结:while循环可以代替for循环,但是可读性较差
int i = 0;
while(i<5){
System.out.println("用良心做教育");
i++;
}
2.4案列
案例:我有个梦想,每月存3000,每年递增1000元,多少个月后存满20万
public class Test02{
public static void main(String[] args){
int money = 3000;//当月应存钱数
int allMoney = 0;//存的总金额
int month = 0;//记录多少个月
while(allMoney < 200000){
allMoney += money;
month++;
if(month%12 == 0){
money += 1000;
}
}
System.out.println(month + "个月后存满20万");
}
}
三、do…while…循环
3.1语法结构
do{
…代码块/循环体…
}while(表达式);
3.2理解
表达式的结果必须是boolean
true — 执行代码块
false – 跳出循环
3.3执行顺序
1.执行一遍代码块
2.判断条件 – 表达式的结果必须是boolean
true — 又执行代码块,重复第2个步骤
false – 跳出循环
3.4死循环
do{
System.out.println(“用良心做教育”);
}while(true);
3.5案列
案例:张三参加学校组织的歌咏比赛,大赛在即, 老师建议:先彩排一次,如果很令人满意,以后就不用彩排了,否则每天都排,直到现场表现满意为止!
Scanner scan = new Scanner(System.in);
String str;
do{
System.out.println("张三:旋转、跳跃,我闭着眼...");
System.out.println("张三:老师,您满意了吗?");
str = scan.next();
}while(str.equals("不满意"));
3.6 for vs while vs do-while
表达式的区别:
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while(判断条件);
注意:判断条件的结果必须是boolean,true就循环,false就跳出循环
执行顺序的区别:
for:先判断,再执行
while:先判断,再执行
do-while:先执行一遍再判断
应用场景:
循环次数固定时,使用for循环
循环次数不固定时,并且先判断再执行,使用while循环
循环次数不固定时,并且先执行一遍再判断,使用do-while循环
四、特殊的流程控制语句
1.break
作用:作用于循环中,表示结束当前循环
做实验:
while(true){
System.out.println(“111”);
System.out.println(“222”);
if(true){
break;
}
System.out.println(“333”);
}
案例:循环录入麻生希同学5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示。
Scanner scan = new Scanner(System.in);
double sum = 0;
boolean flag = true;//true-正常录入 false-非正常录入
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "门成绩:");
double score = scan.nextDouble();
if(score < 0){
flag = false;
break;
}
sum+=score;
}
if(flag){
double avg = sum/5;
System.out.println("平均分为:" + avg);
}else{
System.out.println("分数为负数,停止录入...");
}
2.continue
作用:作用于循环中,表示跳过剩余的循环体,进入到下一次循环
while(true){
System.out.println("111");
System.out.println("222");
if(true){
continue;
}
System.out.println("333");
}
案例:循环录入Java课的5名学生成绩,统计分数大于等于80分的学生比例(按照百分比输出)。
Scanner scan = new Scanner(System.in);
int num = 0;//分数大于等于80分的学生人数
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "名学生的成绩:");
double score = scan.nextDouble();
if(score < 80){
continue;
}
num++;
}
System.out.println("分数大于等于80分的学生比例为:" + (num/5.0 * 100) + "%");
3.return
作用:作用于方法中,表示结束当前方法
System.out.println("111");
System.out.println("222");
if(true){
return;
}
System.out.println("333");
4.lable
含义:给循环做标记
//面试题:以下代码是否会报错?报错原因是什么?
//答:这段代码根本就不会报错(考点lable)
http://www.baidu.com
for(int i = 1;i<=5;i++){
System.out.println("用良心做教育");
}
需求:嵌套for循环,外层循环5次,内层循环3次,当外层循环到第3次时,在内层循环中关闭掉外层循环
a:for(int i = 1;i<=5;i++){
for(int j = 1;j<=3;j++){
if(i == 3){
break a;
}
System.out.println(i + " -- " + j);
}
}
五、输出万年历
输入一个年份,再输入一个月份,把那个月的日历打印出来(1900年1月1日是星期一)
import java.util.Scanner;
public class Test05{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入年:");
int year = scan.nextInt();
System.out.println("请输入月:");
int month = scan.nextInt();
//计算1900年~输入年的总天数
int allDayOfYear = 0;
for(int i = 1900;i<year;i++){
if(i%4==0 && i%100!=0 || i%400==0){//闰年
allDayOfYear += 366;
}else{//平年
allDayOfYear += 365;
}
}
//计算1月~输入月的总天数
int allDayOfMonth = 0;
for(int i = 1;i<month;i++){
switch(i){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
allDayOfMonth += 31;
break;
case 4:case 6:case 9:case 11:
allDayOfMonth += 30;
break;
case 2:
if(year%4==0 && year%100!=0 || year%400==0){
allDayOfMonth += 29;
}else{
allDayOfMonth += 28;
}
break;
}
}
//合并总天数
int allDay = allDayOfYear + allDayOfMonth + 1;
//计算星期
int week = allDay % 7;
if(week == 0){//星期日
week = 7;
}
//获取当月天数
int day = 0;
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day = 31;
break;
case 4:case 6:case 9:case 11:
day = 30;
break;
case 2:
if(year%4==0 && year%100!=0 || year%400==0){
day = 29;
}else{
day = 28;
}
break;
}
//打印日历
System.out.println(" ---" + year + "年" + month + "月---");
System.out.println("一\t二\t三\t四\t五\t六\t日");
int num = 0;//控制换行
//打印空格
for(int i = 1;i<week;i++){
System.out.print("\t");
num++;
}
//打印日期
for(int i = 1;i<=day;i++){
System.out.print(i + "\t");
num++;
if(num % 7 == 0){
System.out.println();
}
}
}
}
原文地址: https://blog.csdn.net/qq_54287371/article/details/124353744
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章