一、循环控制语句
1、while类循环
1.1、while循环
格式:
while(/*布尔表达式*/){
//循环体
}
下面放案例:
@Test
public void t1(){ //输出1-5
int num=0;
while(++num<=5){
System.out.println(num);
}
}
@Test
public void t2(){ //while循环求0—100之间的偶数和
int num=0;
int total=0;
while(num<=100){
System.out.print(num+" ");
total+=num;
num+=2;
}
System.out.println("\n0—100之间的偶数和为:"+total);
}
@Test
public void t3(){ //打印50张电影票
int num=0;
while(num<50){
System.out.println("电影票");
num++;
}
System.out.println("一共有"+num+"张电影票");
}
@Test
public void t4(){ //老王跑步,五圈休息
System.out.println("老王每天会起来跑步:");
int num=1;
while(num<=10){
System.out.println("第"+num+"圈");
if(num==5){
System.out.println("休息五分钟");
}
num++;
}
}
@Test
public void t10(){ //同学复习
String gaiNian="";
String anLi="";
int i=5;
while(i>0){
System.out.println("离月考还有"+i+"天了");
i--;
System.out.println("请输入今天的概念成绩和理论成绩:");
gaiNian=new Scanner(System.in).next();
anLi=new Scanner(System.in).next();
System.out.println("今天的概念:"+gaiNian+" 今天的案例:"+anLi);
}
System.out.println("明天就要考试了,加油!");
}
@Test
public void t18(){ //密码输入
String name="";
int pwd=0;
int cnt=3;
while(cnt>=0){
System.out.println("请输入用户名和密码:");
name=new Scanner(System.in).next();
pwd=new Scanner(System.in).nextInt();
if("tom".equals(name)&&pwd==123){
System.out.println("欢迎使用,登陆成功!");
break;
}else{
System.out.println("输入错误,您还有"+cnt+"次机会");
}
cnt--;
}
if(cnt<0){
System.out.println("很抱歉,您的账户已被锁定!");
}
}
@Test
public void t19(){ //小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。
double add=2.5;
double total=0;
int days=0;
while(total<100){
total+=add;
days++;
if(days%5==0){
total-=6;
}
}
System.out.println("一共需要:"+days+"天,金额为:"+total);
}
1.2、do-while循环
格式:
do{
//循环体
}while(/*布尔表达式*/);
特点:相比于while循环,会先运行循环体一次。
下面放案例:
@Test
public void t5(){ //测试do-while循环
int num=5;
do{
System.out.println(num);
num++;
}while(num<5);
System.out.println("完成");
}
2、for循环
格式:
for(/*循环变量赋初值*/;/*循环条件*/;/*循环变量增值*/){
//循环体
}
下面放案例:
@Test
public void t6(){ //for循环求0—100之间的偶数和
int sum=0;
for(int i=0;i<=100;i+=2){
System.out.print(i+" ");
sum+=i;
}
System.out.println("\n0—100之间的偶数和为:"+sum);
}
@Test
public void t8(){ //5门课输入和求均分
double grade=0;
double sum=0;
System.out.print("请输入姓名:");
String name=new Scanner(System.in).next();
for(int i=1;i<=5;i++){
System.out.print("请输入第"+i+"门课的成绩:");
grade=new Scanner(System.in).nextInt();
sum+=grade;
}
System.out.println(name+"的平均考试成绩为:"+sum/5);
}
@Test
public void t9(){ //用continue将100-200之间的不能被3整除的数
for(int i=100;i<=200;i++){
if(i%3==0){
continue;
}else{
System.out.println(i);
}
}
}
@Test
public void t11(){ //超市年龄调查
double old=0;
double young=0;
double age=0;
for(int i=1;i<=10;i++){
System.out.println("第"+i+"位顾客的年龄为:");
age=new Scanner(System.in).nextDouble();
if(age>=30){
old++;
}else{
young++;
}
}
System.out.println("30岁以上的顾客占比:"+old*10+"% 30岁以下的顾客占比:"+young*10+"%");
}
@Test
public void t15(){ //1-100之间奇数和
int total=0;
for(int i=1;i<=100;i++){
if(i%2==1){
System.out.println(i);
total+=i;
}
}
System.out.println("和为"+total);
}
@Test
public void t16(){ //手动输入两个数字m和n,运算求出m~n之间所有偶数的和。
System.out.println("请输入数字1和数字2:");
int num1=new Scanner(System.in).nextInt();
int num2=new Scanner(System.in).nextInt();
int total=0;
for(int i=num1;i<=num2;i++){
if(i%2==0){
System.out.println(i);
total+=i;
}
}
System.out.println("和为"+total);
}
@Test
public void t17(){ //统计1-1000对3整除余2,对5整除余3,对7整除余2。
int num1=0;
int num2=0;
int num3=0;
for(int i=1;i<=1000;i++){
if(i%3==2){
num1++;
}
if(i%5==3){
num2++;
}
if(i%7==2){
num3++;
}
}
System.out.println("1-1000以内\n对3整除余2的数为:"+num1+"个\n对5整除余3的数为:"+num2+"个\n对7整除余2的数为:"+num3+"个");
}
3、嵌套循环
顾名思义,循环之间互相嵌套,一定不要超过三层嵌套!
下面放一些案例:
@Test
public void t7(){ //输出上金字塔乘法表,下金字塔见t20
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
}
@Test
public void t20(){ //输出下金字塔式乘法表,上金字塔见t7
for(int i=1;i<=9;i++){ //表示行数,走几趟
for(int j=i;j<=9;j++){ //表示列数,每趟走几次
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
}
@Test
public void t12(){ //输出*矩形
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
System.out.print("* ");
}
System.out.println();
}
}
@Test
public void t13(){ //输出*正金字塔
for(int i=0;i<10;i+=2){
for(int j=0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
@Test
public void t14(){ //输出*倒金字塔
for(int i=0;i<5;i++){
for(int j=5;j>i;j--){
System.out.print("*");
}
System.out.println();
}
}
4、break和continue
4.1、break
特点:直接跳出循环。
public void t21(){ //跑步问题
for(int i=1;i<=10;i++){
if(i==5){
System.out.println("我已经跑了5圈了,跑不动了!");
break; //5圈以后不会再跑了,直接跳出
}
System.out.println("这是我跑的第"+i+"圈");
}
}
4.2、continue
特点:继续循环。
@Test
public void t21(){ //跑步问题
for(int i=1;i<=10;i++){
if(i==5){
System.out.println("这是我跑的第5圈");
System.out.println("我已经跑了5圈了,休息一下!");
continue; //5圈休息一下,然后继续跑
}
System.out.println("这是我跑的第"+i+"圈");
}
}