今天我们来学习循环结构
循环顾名思义就是有规律性的重复操作
Java中有三种主要的循环结构:
while循环,do…while循环,for循环
循环结构的特点有:循环条件和循环操作
while循环结构
while(循环条件){
? ? ? ? 循环操作
}
循环条件:符合条件,循环继续执行;否则,循环退出
循环操作:循环中被重复执行的操作
特点:先判断,再执行
程序分享:
2006年培养学员8万人,每年增长25%,请问按此 增长速度,到哪一年培训学员人数将达到20万人?
int stu = 80000;//初始化学员人数
int year = 2006;//初始化年
while (stu<200000){//循环条件
stu = (int)(stu * 1.25);//循环操作
year++;
}
System.out.println(year+"年人数将达到"+stu+"人");
100以内偶数之和
int num = 2;//初始化第一个开始的偶数
int sum = 0;//初始化和sum
while (num<=100){
sum = num +sum ;//偶数与和的相加操作
num = num + 2;//每次循环num+2进行下一个偶数的相加循环
}
System.out.println("和为"+sum);
查询商品价格及购物结算
System.out.println("购物结算");
System.out.println("//");
System.out.println("请选择购买的商品编号");
System.out.println("1:T恤 2:网球鞋 3:网球拍");
System.out.println("//");
Scanner input = new Scanner(System.in);
double price=0;//单价
double price01 =0;//T恤总价
double price02 = 0;//网球鞋总价
double price03 = 0;//网球拍总价
double yf = 0;//应付金额
double sf = 0;//实付金额
double zl = 0;//找零
String name="";//编号
String sum="y";//T or F
while ("y".equals(sum)){
System.out.println("请输入商品的编号:");
int num =input.nextInt();
System.out.println("请输入购买数量:");
int num1 = input.nextInt();
switch(num){
case 1:
name="T恤";
price=245.0;
price01 = price * num1;
System.out.println(name+""+"$"+price+"\t"+"数量"+num1+"\t"+"合计"+price01);
break;
case 2:
name="网球鞋";
price=570.0;
price02 = price * num1;
System.out.println(name+""+"$"+price+"\t"+"数量"+num1+"\t"+"合计"+price02);
break;
case 3:
name="网球拍";
price=99.0;
price03 = price * num1;
System.out.println(name+""+"$"+price+"\t"+"数量"+num1+"\t"+"合计"+price03);
break;
default:
System.out.println("输入错误!");
break;
}
// System.out.println(name+""+"$"+price+"\t"+"数量"+num1+"\t"+"合计"+price01);
System.out.println("是否继续?(y/n)");
sum=input.next();
}
yf = price01+price02+price03;
System.out.println("请输入实付金额");
sf = input.nextDouble();
zl = sf - yf;
System.out.println("折扣:0.8"+"\n"+"应付金额:"+yf+"\n"+"实付金额"+sf+"\n"+"找零"+zl);
do-while循环结构
do{
循环操作
}while(循环条件);
循环操作:先执行一遍
循环条件:符合条件,循环继续执行;否则,循环退出(注意,结尾的分号不可以少)
特点:先执行,再判断
程序分享:
使用do-while实现:输出摄氏温度与华氏温度的对照表,要求它从摄氏温度0度到250度,每隔20度为一项,对照表中的条目不超过10条
转换关系:华氏温度 = 摄氏温度 * 9 / 5.0 + 32
double celsius = 0;//定义摄氏温度
double fahrenheit = 0;//定义华氏温度
int i = 1;//定义对照表条目
do {
fahrenheit = celsius * 9/5.0 +32;//转换关系
System.out.println("摄氏温度"+celsius+"\t"+"华氏温度"+fahrenheit);
celsius = celsius +20;//摄氏温度每隔20为一项
i++;
}while (i<=10 && celsius<=250 );//循环条件
如果用户输入错误,可以重复输入直到输 入正确,执行相应的操作后退出循环
System.out.println("欢迎使用管理系统");
System.out.println("******");
System.out.println("1.客户信息管理");
System.out.println("2.购物结算");
System.out.println("3.真情回馈");
System.out.println("4.注销");
System.out.println("******");
System.out.println("请选择,输入数字:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
do {
if (num==1){
System.out.println("执行客户信息管理");
System.out.println("程序结束");
break;//退出循环
}else if (num==2){
System.out.println("执行购物结算");
System.out.println("程序结束");
break;
}else if (num==3){
System.out.println("执行真情回馈");
System.out.println("程序结束");
break;
}else if (num==4){
System.out.println("执行注销操作");
System.out.println("程序结束");
break;
}
else{
System.out.println("执行错误请重新输入数字");
}
num = input.nextInt();
}while (num<=5);
小结
while循环和do-while循环的区别
1.语法不同
2.执行次序不同:
????????
? ? ? ?
while是先判断后执行?
? ? ? ? do-while是先执行再判断
3.初始情况不满足循环条件时:
? ? ? ?
while循环一次都不会执行
? ? ? ? do-while循环不管任何情况都至少执行一次
?for 循环结构
? ? ? ? for(1.参数初始化;2.条件判断;4.更新循环变量){
? ? ? ?3. 循环操作;
}
条件判断成立时循环体才会执行
循环执行顺序 第一次循环:参数初始化→条件判断→循环操作→更新循环变量 第一次之后的循环:条件判断→循环操作→更新循环变量
代码规范:格式对齐;代码缩进
常见问题
? ? ? ??1)在for语句中可以省略初始化变量但是循环变量的初始值必须在for语句之前由赋值语句取得,否则会出现编译错误
? ? ? ? 2)缺少循环条件,虽然会编译通过但是会造成死循环
? ? ? ? 3)缺少循环操作,编译通过但是因为在循环体内循环变量的值无变化所以会造成死循环
? ? ? ? 3)表达式全部缺少,初始化省略,无条件判断,循环变量无改变,会造成死循环
程序分享:
循环输入小王的五门成绩并求出平均分
System.out.println("输入学生姓名:");
Scanner input = new Scanner(System.in);
String name = input.next();
double total = 0;
for (int i=1;i<=5;i++){
System.out.println("请输入第"+i+"门课的成绩:");
double score = input.nextDouble();
total +=score;
}
double avg = total /5;
System.out.println("小王的平均分是:"+avg);
?break语句和continue语句
break:改变程序控制流
用于do-while、while、for中时,可跳出循环而执行循环后面的语句
程序分享:
1~10之间的整数累加,得到累加值大于20的当前数
int sum = 0;
for (int i = 1;1<=10;i++){
sum = i+sum;//累加,从1到10
if(sum>20){//判断累加值是否大于20
System.out.println(sum);
break;//跳出循环,并打印当前值
}
}
continue:只能用在循环里
用于跳过循环体中剩余的语句而执行下一次循环
程序分享:
循环录入会员信息,循环录入三位会员信息;会员号无效,利用continue实现程序跳转
System.out.println("添加客户信息");
Scanner input = new Scanner(System.in);
for (int i = 1;i<=3;i++){
System.out.println("请输入会员号(4位整数):");
int VIPnumber = input.nextInt();
if (VIPnumber<1000){
System.out.println("请输入会员生日:");
String date = input.next();
System.out.println("请输入会员积分:");
double point = input.nextDouble();
System.out.println("客户号为无效卡号"+"\n"+"录入信息失败!"+"\n");
continue;//卡号无效实行跳转进行下一次循环
}
System.out.println("请输入会员生日:");
String date = input.next();
System.out.println("请输入会员积分:");
double point = input.nextDouble();
System.out.println(VIPnumber+" "+date+" "+point+"\n");
}
小结
对比break和continue
使用场合
– break可用于switch结构和循环结构中
– continue只能用于循环结构中
作用(循环结构中)
– break语句终止某个循环,程序跳转到循环块外的下一条语句。
– continue跳出本次循环,进入下一次循环
?????????????????????????????????????????????????????????人的内心不种满鲜花就会长满杂草
|