案例一:
打印三行四列的长方形
for(int i = 0;i<3;i++){
//控制行数
for(int j = 0;j<4;j++){
//控制列数
System.out.print("*");
}
System.out.println();//换行
}
案例二:
打印三角形
*
**
***
****
*****
for(int i = 0;i<5;i++){
//控制行数
for(int j = 0;j<= i;j++){
//控制列数
System.out.print("*");
}
System.out.println();//换行
}
案例三:
*****
****
***
**
*
for(int i = 0;i<5;i++){
//控制行数
for(int j = 0;j<5-i;j++){
//控制列数
System.out.print("*");
}
System.out.println();//换行
}
案例四:
*****
****
***
**
*
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();//换行
}
案例五:
*
***
*****
*******
for(int i = 0;i<4;i++){
for(int k = 0;k<3-i;k++){
System.out.print(" ");
}
for(int j = 0;j<2*i+1;j++){
System.out.print("*");
}
System.out.println();
}
案例六:
*
* *
* *
*******
for(int i = 0;i<4;i++){
for(int k = 0;k<3-i;k++){
System.out.print(" ");
}
for(int j = 0;j<2*i+1;j++){
if(j==0 || j==2*i || i==3){
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-2*i;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-2*i;j++){
if(i == 0 || j==0 || j == 7-2*i-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 + "=" + (j*i) + "\t");
}
System.out.println();
}
案例12:九九乘法表
for(int i = 1;i<=9;i++){
for(int k = 1;k<i;k++){
System.out.print("\t");
}
for(int j = i;j<=9;j++){
System.out.print(i + "x" + j + "=" + (j*i) + "\t");
}
System.out.println();
}
while(表达式){
…代码块…
}
表达式的结果一定是boolean类型
true - 执行代码块
false- 跳出循环语句
while(true){
System.out.println(“死循环”);
}
System.out.println(“循环以外”);
案例1:我有个梦想,每月存3000,每月递增1000元,多少个月后存满100万
int allMoney = 0;//总金额
int money = 3000;//当月存储的金额
int month = 1;//月
while(allMoney < 1000000){
allMoney += money;
money += 1000;
month++;
}
System.out.println(month + "个月后存满100万");
案例2:我有个梦想,每月存3000,每年递增1000元,多少个月后存满20万
int allMoney = 0;//总金额
int money = 3000;//当月存储的金额
int month = 1;//月
while(allMoney < 200000){
allMoney += money;
if(month % 12 == 0){
money += 1000;
}
month++;
}
System.out.println(month + "个月后存满20万" + money);
do{
...代码块...
}while(表达式);
先执行一次代码块,在判断表达式,表达式的结果一定是boolean类型
true - 执行代码块
false - 跳出循环语句
do{
System.out.println(“死循环”);
}while(true);
System.out.println(“循环以外”);
!!!!一定要避免
铃原爱蜜莉参加学校组织的歌咏比赛,大赛在即,
老师建议:先彩排一次,如果很令人满意,以后就不用彩排了,
否则每天都排,直到现场表现满意为止!
Scanner scan = new Scanner(System.in);
String str;
do{
System.out.println("铃原爱蜜莉:旋转、跳跃,我闭着眼...");
System.out.println("铃原爱蜜莉:老师,你满意了吗?");
str = scan.next();
}while(str.equals("不满意"));//判断两个字符串内容是否相等
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while(判断条件);
注意-共同点:判断条件都是boolean值,true就循环,false就跳出循环语句
for:先判断再执行
while:先判断再执行
do-while:先执行一遍,再判断
for:循环次数确定时
while:循环次数不确定时,先判断再执行
do-while:循环次数不确定时,先执行一遍,再判断
break:作用于循环里,跳出当前循环
案例:循环录入麻生希同学5门课的成绩并计算平均分,
如果某分数录入为负,停止录入并提示。
Scanner scan = new Scanner(System.in);
double sum = 0;//总分
boolean flag = true;//默认正常录入
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){
System.out.println("平均分为:" + (sum/5));
}else{
System.out.println("分数为负数,停止录入");
}
作用于循环里,跳过剩余的代码块,进入到下一次循环
案例:循环录入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) + "%");
如果单独写,方法到此结束
Scanner scan=new Scanner(System.in);
int num=0;
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) + "%");
lable技术:给循环做标记
需求:嵌套for循环,外层循环打印5遍,内层循环打印3遍,
当外层循环到第3遍时,在内层循环中跳出外层循环;
示例:
a:for(int i = 1;i<=5;i++){
for(int j = 1;j<=3;j++){
System.out.println("i=" + i + ",j=" + j);
if(i == 3){
break a; //直接跳出整个循环
}
}
}