java循环结构-6

文章讲述了在Java编程中如何使用循环结构(for、while、do-while)以及continue和break语句,通过实例分析了统计分数、验证用户登录信息和录入会员信息的过程,展示了如何控制循环流程以满足特定条件。
摘要由CSDN通过智能技术生成

 

目录

6.2.3 技能训练

6.3 循环结构总结


问题:循环录入学生Java课程的成绩,统计分数大于等于80分的学生的比例。

分析:使用循环语句录入学生成绩并累计人数,这对我们来说并不是难题,但是如果仅累计满足分数大于等于80分的人数,该怎么办呢?这时可以使用continue语句控制累计操作是否进行,如示例7所示。

示例7

package cn.jbit.loops1;
import java.util.Scanner;
public class ContinueDemo {
   
/**
     *
统计80分以上学生比例
    
*/
   
public static void main(String[] args) {
       
int score;        // 成绩
       
int total;        // 班级总人数
       
int num = 0;   // 成绩大于或等于80分的人数
       
Scanner input = new Scanner(System.in);
       
System.out.print("输入班级总人数: ");
       
total = input.nextInt();   // 输入班级总数
       
for (int i = 0; i < total; i++) {
           
System.out.print("请输入第" + (i + 1) + "位学生的成绩: ");
            score =
input.nextInt();
           
if (score < 80) {
               
continue;
            }
            num++;
        }
       
System.out.println("80分以上的学生人数是: " + num);
       
double rate = (double) num / total * 100;
       
System.out.println("80分以上的学生所占的比例为:" + rate + "%");
    }
}


程序运行结果如图6.7所示。

图6.7示例7的运行结果

分析程序,变量total保存班级总人数,变量num保存80分以上的学生人数,i从0开始循环一直到total-1。如果录入的分数大于等于80,则num自加1,然后结束本次循环,进入下一次循环;如果录入的分数小于80,则执行continue,然后结束本次循环,进入下一次循环。现在回想一下刚才学过的break语句,是不是能够理解它们之间的区别了?如果体会得还不是很深刻,就赶紧动手写一写下面这个程序吧!

问题:求1~100之间个位数字不是2、3、4、7,并且不能被3整除的整数之和。

分析:仔细分析,会发现这个问题仍然是对某些满足条件的值求和,只不过这次的条件复杂了。如果这个值的个位是2、3、4、7或者能被3整除,则使用continue语句结束此次循环,进行下一次循环。

示例8

package cn.jbit.loops1;

public class ContinueDemo2 {
   
public static void main(String[] args) {
       
int sum = 0//定义变量保存累加值
       
for (int i = 1; i <=100; i++) {
           
//判断i是否满足条件
           
if ( i % 10 == 2 || i % 10 == 3 || i % 10 == 4 ||  i % 10 == 7 || i % 3 == 0) {
               
continue;
            }
                sum = sum + i;
//进行累加
       
}
       
System.out.println("1~100 之间个位数不是2347" + "并且不能被3整除的整数和是:" + sum);
    }
}

在示例8中,使用if语句进行条件判断。如果i对10取余等于2,或者i对10取余等于3,或者i对10取余等于4,或者i对10取余等于7,或者i对3取余等于0,则说明i不是所需要的数,不进行累加,而进入下一次的循环。

小结:continue语句可以用于for循环结构,也可以用于while和do-while循环结构。在for循环结构中,continue语句使程序先跳转到迭代部分,然后判断循环条件。如果为true,则继续下一次循环;否则终止循环。在while循环结构中,continue语句执行完毕后,程序将直接判断循环条件。continue语句只能用在循环结构中。

学习了 break和continue语句,可知这两个语句都能改变循环操作,但它们之间有什么区别呢?

对比:

在循环结构中:

  • break语句用于终止某个循环,程序跳转到循环体外的下一条语句。
  • continue语句用于跳出本次循环,进入下一次循环的语句。

6.2.3 技能训练

前面已经学习了 Java语言中的三种循环,也知道了 break语句和continue语句的使用方法,下面通过上机练习来巩固知识。

上机练习3

指导——循环录入会员信息

训练要点

  • for循环结构。
  • continue 语句。

需求说明

  • 商场为了维护会员信息,需要将其信息录入系统中,具体要求如下。

♦ 循环录入三位会员的信息(会员号、会员生曰、积分)。

♦ 判断会员号是否合法(四位整数)。

♦ 若会员号合法,则显示录入的信息,否则显示录入失败。


♦ 程序运行结果如图6.8所示。

图6.8上机练习3的运行结果

实现思路及关键代码

(1) 定义三个变量,分别记录会员号、会员生曰和会员积分。

(2) 利用循环录入三位会员的信息。

(3) 如果会员号无效,利用continue实现程序跳转。

参考解决方案

package cn.jbit.loops1;
import java.util.Scanner;
public class AddCustomer {
   
/*
     *
循环录入会员信息
    
*/
   
public static void main(String[] args) {
       
System.out.println("MyShopping管理系统 > 客户信息管理 > 添加客户信息\n");
       
int custNo = 0;        //会员号
       
String birthday;   //会员生日
       
int points = 0;       //会员积分
       
Scanner input = new Scanner(System.in);
       
for(int i = 0; i < 3; i++){       //循环录入会员信息
           
System.out.print("请输入会员号(<4位整数>):");
            custNo =
input.nextInt();
           
System.out.print("请输入会员生日(月/<用两位整数表示>):");
            birthday =
input.next();
           
System.out.print("请输入会员积分:");
            points =
input.nextInt();
           
if(custNo < 1000 || custNo > 9999){    //会员号无效则跳出
               
System.out.println("客户号" +custNo+ "是无效会员号!");
               
System.out.println("录入信息失败\n");
               
continue;
            }
           
System.out.println("您录入的会员信息是:");
           
System.out.println(custNo+ " " +birthday+ " " +points+ "\n");
        }
       
System.out.println("程序结束!");
    }
}

上机练习4

练习——验证用户登录信息

需求说明


用户登录系统时需要输入用户名和密码,系统对用户输入的用户名和密码进行验证。验证次数最多三次,超过三次则程序结束。根据验证结果的不同(信息匹配/信息不匹配/三次都不匹配),执行不同的操作。假设正确的用户名和密码分别为jim和123456,三种情况的运行结果分别如图6.9-图6.11所示。

图 6.9 信息匹配运行结果        图 6.10 信息不匹配运行结果     图 6.11 3次信息不匹配运行结果

提示:

  • 定义三个变量,分别保存用户名、密码和用户输入的次数。
  • 利用循环结构输入用户名和密码,利用continue语句和break语句控制程序流程。

代码展示:

package cn.jbit.loops1;
import java.util.Scanner;
public class LoginCheck {
   
/**
     *
验证用户名和密码(根据匹配情况执行不同操作)
    
*/
   
public static void main(String[] args) {
       
int i = 0;
       
String userName;
       
String password;
       
Scanner input = new Scanner(System.in);
       
for(i = 0; i < 3; i++){
           
System.out.print("请输入用户名:");
            userName =
input.next();
           
System.out.print("请输入密码:");
            password =
input.next();
           
if("jim".equals(userName) && "123456".equals(password)){   //匹配
               
System.out.println("欢迎登录MyShopping系统!");
               
break;
            }
else{ //不匹配
               
System.out.println("输入错误!您还有" +(2-i)+ "次机会!\n");
               
continue;
            }
        }
       
if(i == 3){    //3次都不匹配
           
System.out.println("对不起,您3次均输入错误!");
        }
    }
}

6.3 循环结构总结

到目前为止,我们已经学习了 Java提供的三种最主要的循环结构,它们是while、do-while和for循环结构。无论哪一种循环结构,都有四个必不可少的部分:初始部分、循环条件、循环体、迭代部分,缺少了任何一个都可能造成严重的错误。下面从三个方面对这三种循环结构进行比较。

  • 语法不同。

while循环语句如下。

while  (<条件〉){

//循环体

}

do-while循环语句如下。

do {

//循环体

} while (< 条件〉);

for循环语句如下。

for(初始化;条件;迭代){

//循环体

}

  • 执行顺序不同。

♦  while循环结构:先进行条件判断,再执行循环体。如果条件不成立,退出循环。

♦  do-while循环结构:先执行循环体,再进行条件判断,循环体至少执行一次。

♦  for循环结构:先执行初始化部分,再进行条件判断,然后执行循环体,最后进行迭代部分的计算。如果条件不成立,跳出循环。

  • 适用情况不同。

在解决问题时,对于循环次数确定的情况,通常选用for循环结构;对于循环次数不确定的情况,通常选用while和do-while循环结构。

本章总结

  • for循环结构的语法格式如下。

for  (表达式 1; 表达式 2; 表达式 3) {

//循环体

}

表达式1:循环结构的初始部分,为循环变量赋初值。

表达式2:循环结构的循环条件。

表达式3:循环结构的迭代部分,通常用来修改循环变量的值。

  • 在循环中,可以使用break和continue语句控制程序的流程。

♦ break语句用于终止某个循环,程序跳转到循环体外的下一条语句。

♦ continue语句用于跳出本次循环,进入下一次循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值