概念:通过某个条件,重复的执行一段逻辑代码
语法:
while(布尔表达式){
? //逻辑代码(循环操作)
? }
执行流程:
public class TestWhile{
public static void main(String[] args){
//打印100遍HelloWorld
int i = 1;//1.初始部分:用于判断的变量
while (i <= 100){//2.循环条件:决定是否继续循环的依据
System.out.println("HelloWorld");//3.循环操作:单次执行的逻辑代码或任务
i++;//4.迭代部分:控制循环条件改变的增量
}
System.out.println("程序结束...");
}
}
public class TestGetSum{
public static void main(String[] args){
/*
获取1-100之间所有数字的总和
1.循环100次的问题
2.循环的过程中进行求和
*/
int i = 1;//初始部分
int sum = 0;
while(i <= 100){//循环条件
sum = sum + i;//循环操作
i++;//迭代部分
}
System.out.println("总和为:" + sum);
System.out.println("程序结束...");
}
}
public class TestGetSum2{
public static void main(String[] args){
/*
求1-100之间所有偶数的和
方案一:获取所有的偶数,相加求和
方案二:依旧获取1-100之间的每一个数字,进行偶数的判断,满足条件后,相加求和
*/
int i = 1;
int sum = 0;
while(i <= 100){
if(i %2 == 0){//判断偶数
sum = sum + i;//求和
}
i++;
}
System.out.println("偶数的和:" + sum);
}
}
注意:循环有四部分组成
While的特点:
语法:
do{
? 逻辑代码(循环操作)
? }while(布尔表达式);
执行流程:
public class TestDoWhile{
public static void main(String[] args){
//打印100遍HelloWorld
int i = 1;
do{
System.out.println("打印HelloWorld第" + i + "次");
i++;
}while(i <= 100);
System.out.println("程度结束...");
}
}
import java.util.Scanner;
public class TestDoWhile2{
public static void main(String[] args){
//循环操作:学生抄写代码、教师输入评语
Scanner input = new Scanner(System.in);
char answer;//记录老师当次的评语
do{
System.out.println("抄写一遍作业代码。。。。。。");
System.out.println("请输入老师评语:");
answer = input.next().charAt(0);//输入y,表示及格,退出循环;否则继续循环
}while(answer != ‘y‘);
System.out.println("作业已完成");
}
}
do while特点:
语法:
for(初始部分;循环条件;迭代部分){
? //循环操作
}
执行流程:
public class TestFor{
public static void main(String[] args){
//打印100遍HelloWorld
//1.初始部分(只执行一次)2.循环条件3.循环操作4.迭代部分
for(int i = 1; i <= 100; i++){
System.out.println("HelloWorld" + i);
}
System.out.println("程序结束...");
}
}
//for循环与while循环相同,首次判断不满足,则一次都不会执行。(执行次数:0~n次)
import java.util.Scanner;
public class TestFor2{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//计算5位同学的平均分
double sum = 0.0;//总和
for(int i = 1; i <= 5; i++){
//1.循环控制台录入分数
System.out.println("请输入第" + i + "位同学的成绩:");
double score = input.nextDouble();
//2.累加总和
sum = sum + score;
}
double avg = sum / 5;
System.out.println("平均分是:" + avg);
}
}
特点:首次即有入口条件,先判断、再执行,适用于循环次数明确的情况
流程控制语句:
import java.util.Scanner;
public class TestBreak{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//控制台录入5位同学成绩,如果有同学成绩不满足(0-100)视为不合法,则退出循环
double sum = 0.0;
boolean flag = true;//代表合法
for(int i = 1; i <= 5; i++){
System.out.println("请输入第" + i + "位同学的成绩:");
double score = input.nextDouble();
if(score < 0 || score > 100){
flag = false;//非法数据
break;
}
sum = sum + score;
}
if(flag == true){//根据flag标记决定是否要计算平均分
double avg = sum / 5;
System.out.println("平均分是:" + avg);
}else{
System.out.println("非法数据,请重新运行程序计算平均分");
}
}
}
import java.util.Scanner;
public class TestContinue{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//控制台录入5位同学成绩,如果有同学成绩不满足(0-100)视为不合法,继续输入直到合法,然后计算5位同学平均分
double sum = 0.0;
for(int i = 1; i <= 5; ){
System.out.println("请输入第" + i + "位同学的成绩:");
double score = input.nextDouble();
if(score < 0 || score > 100){
continue;
}
sum = sum + score;
i++;
}
double avg = sum / 5;
System.out.println("平均分是:" + avg);
}
}
概念:在一个完整的循环结构中,嵌套另一个完整的循环结构
public class TestNestedFor{
/*
*****
*****
*****
*/
public static void main(String[] args){
for(int i = 1; i <=3; i++){//将内部代码重复3次
for(int j = 1; j <=5; j++){//在一行中打印五颗星
System.out.print("*");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class TestNestedFor2{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
for(int k = 1; k <= 3; k++){
System.out.println("------第" + k + "班------");
double sum = 0.0;
for(int i = 1; i <=5; i++){
System.out.println("请输入第" + i + "位同学的成绩:");
double score = input.nextDouble();
sum += score;
}
double avg = sum / 5;
System.out.println("第" + k + "班五位同学的平均分为:" + avg);
}
}
}
public class TestNestedFor3{
public static void main(String[] args){
/*
打印直角三角形
*
**
***
****
*****
*/
for(int i =1; i <= 5; i++){//外层控制行数
for(int j = 1; j <= i; j++){//内层控制列数
System.out.print("*");
}
System.out.println();
}
System.out.println("程序结束");
}
}
public class TestNestedFor4{
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 + " = " + (j*i) + " ");
}
System.out.println();
}
System.out.println("程序结束");
}
}
public class TestNestedFor5{
public static void main(String[] args){
/*
打印等腰三角形
*
* *
* * *
* * * *
* * * * *
*/
for(int i =1; i <= 5; i++){//外层控制列数
for(int j = 1; j <= i; j++){//内层控制行数
System.out.print("* ");
}
System.out.println();
}
System.out.println("程序结束");
}
}
原文:https://www.cnblogs.com/MRASdoubleZ/p/14361144.html