4.循环

来源:互联网 发布:易语言聊天机器人源码 编辑:程序博客网 时间:2024/06/06 15:00
while循环:
特点:先判断,再执行
编码规范:缩进,换行
可能不执行
while(条件){
//循环操作
}
do-whie循环:
特点:先执行,再判断
do{
//循环操作
}while(循环条件);(此时的分号;必不可少)(符合循环条件,循环继续执行,否则退出循环)
至少执行一遍
实例1:实现如图效果
package com.jredu.ch03;
import java.util.Scanner;
public class Ch04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//提示信息
System.out.println("**************************");
System.out.println("请选择购买的商品编号");
System.out.println("1.T恤\t2.网球鞋\t3.网球拍");
System.out.println("****************");
Scanner sc=new Scanner(System.in);
String str=null;
//循环
do{
//输入编号
System.out.print("请输入商品编号");
//得到编号
int num=sc.nextInt();
//根据编号得到价格
//根据编号显示价格
switch (num) {
case 1:
System.out.println("T恤\t\t200");
break;
case 2:
System.out.println("网球鞋\t\t570");
break;
case 3:
System.out.println("网球拍\t\t300");
break;
default:
System.out.println("输入编号有误");
break;
}
//得到是否继续
System.out.print("是否继续(y/n)");
str=sc.next();
} while(str.equals("y")); //获取字符串里面的内容方法
//根据输入信息确定是否继续
System.out.println("谢谢使用");
}
}
实例2:实现如图效果
package com.jredu.ch03;

import java.util.Scanner;

public class Ch07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//输出提示信息
System.out.println("请选择商品编号");
System.out.println("1.T恤\t\t2.网球鞋\t\t3.网球拍");
//定义变量存储商品总价
double sum=0;
double tx=245.00;//T恤衫价格
double shot=570.00;//网球鞋价格
double pai=100.00;//网球拍价格
String str=null;
Scanner sc=new Scanner(System.in);
//循环
do{
//每次选择商品,计算该商品价格
System.out.print("请输入商品编号:");
int num=sc.nextInt();
System.out.print("请输入数量");
int count=sc.nextInt();
switch (num) {
case 1:
//T恤
System.out.println("商品:T恤\t¥"+tx+"\t\t数量:"+count+",合计:¥"+tx*count);
sum+=tx*count;
break;
case 2:
//网球鞋
System.out.println("商品:网球鞋\t¥"+shot+"\t\t数量:"+count+",合计:¥"+shot*count);
sum+=tx*count;
break;
case 3:
//网球拍
System.out.println("商品:网球拍\t¥"+pai+"\t\t数量:"+count+",合计:¥"+pai*count);
sum+=tx*count;
break;
default:
System.out.println("输入编号有误");
break;
}
//更新总价
//判断是否继续
System.out.println("是否继续(y/n)");
str=sc.next();
} while(str.equals("y"));
//输出结果
System.out.println("折扣:0.8");
//应付金额
sum*=0.8;
System.out.println("应付金额:"+sum);
System.out.print("实付金额");
double real=sc.nextDouble();
System.out.println("找零:"+(real-sum));
}

}

for循环:
在知道循环次数时使用
表达式1:声明一个循环变量,即参数初始化
表达式2:判断条件
表达式3:更新循环变量
for(表达式1;表达式2;表达式3){
//循环操作
}

实例1:要求采用(1+100)+(2+99)+(3+98)+..+(50+51)思路实现
package com.jredu.ch03;
public class Ch01 {
public static void main(String[] args) {
// TODO Auto-generated method stub\
int sum=0;
for(int i=1,y=100;i<51|y>50;i++,y--){
sum+=(i+y);
}
System.out.println(sum);
}
}
实例2:打印*
**
***
****
*****
package com.jredu.ch03;
public class Ch02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//打印5行
//第n行打印n个*
for (int i=1;i<6;i++){
for(int x=1;x<=i;x++){
System.out.print("*");
}System.out.println();
}
}
}

循环嵌套:
外层循环变量变换一次,内部循环变量变换一遍
一个循环体内又包含另一个完整的循环结构
1.while的嵌套:
while(循环条件1){
//循环操作1
while(循环条件 2){
//循环操作2
}
}
2.do-while的循环嵌套:
do{
//循环操作1
do{
//循环操作2
}while(循环条件1)
}while(循环条件2)
3.for的循环嵌套
for(循环条件1){
//循环操作
for(循环条件1){
//循环操作2
}
}
4.while-for的循环嵌套
while(循环条件1){
//循环操作1
for(循环操作2){
//循环操作2
}
}
实例:打印5行,第n行打印n个*
package com.jredu.ch03;
public class Ch02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i=1;i<6;i++){
for(int x=1;x<=i;x++){
System.out.print("*");
}
System.out.println();
}
}
}

程序调试 :
在编写程序的过程中有时也会有错误,但不好发现和定位错误,我们可以通过代码阅读或者加输出语句查找程序错误,但当程序结构越来约复杂时,需要专门的技术来发现和定位错误,就是”程序调试“。
程序调试的目的:找出缺陷原因,修正缺陷。
程序在执行时忽闪一下就运行结束,让程序一步一步运行的方法:

程序调试:
1.设置断点(程序暂停执行的代码行)在窗口左边有蓝色竖线,双击可以添加断点, 再次双击可以移除断点。
如图:黄色圈出的蓝色竖线

2.单步运行(Debug as运行,f5进入下一步,在Varizbles处观察每一步的执行结果)
3.观察变量


break语句 :
改变程序控制流
用于do-while、while、for中时,可以跳出循环而执行循环后面的语句
break也可以终止switch的操作
实例:
package com.jredu.ch03;
public class Ch08 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//break语句可以用于循环或switch
//break作用是跳出当前循环或跳出switch
//只能跳出一层
for(int i=1;i<10;i++){
//如果if语句中只有一条语句,可以省略{}
if(i%4==0){
break;
}
System.out.println(i+"\t");
}
System.out.println("循环结束");
}
}
结果如图:

return:结束当前整个方法的循环
实例:
package com.jredu.ch03;
public class Ch10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//return可以作用在方法的任何位置
//作用1:结束当前方法
//作用2:返回结果给方法的调用者(此时方法要有返回值的)
/**
* 对于作用2,因为void没有返回值,所以return不需要带返回值,
* 将void改为int,则return返回时需要返回一个数值,例如 return 1;
* 将void改为string,则return返回时需要返回一个字符串,例如,return "";
*/
for(int i=1;i<10;i++){
if(i%4==0){
return;
}
System.out.println(i+"\t");
}
System.out.println("结束循环");

}
}
continue语句
只能用在循环里
跳过循环体中的剩余的语句而执行下一次循环
实例:
package com.jredu.ch03;
public class Ch09 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//continue跳过当前循环,直接进入下一次循环
for(int i=0;i<10;i++){
if(i%5==0){
continue;
}
System.out.println(i+"\t");
}
}
}
结果如图:
练习:
package com.jredu.ch03;
import java.util.Scanner;
/**
* ATM机1
* @author Administrator
*
*/
public class ATM1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
//最多循环三次
for(int i=0;i<3;i++) {
//输入密码
System.out.print("请输入密码:");
String pwd=sc.next();
if(!pwd.equals("111111")) {
//密码不正确
if(i==2) {
System.out.println("密码输入错误超过三次,已吞卡");
} else {
System.out.println("密码错误,还有"+(2-i)+"次机会");
}
} else {
//密码正确
//循环
//取钱
while(true){
System.out.print("请输入金额(必须是100的倍数,最大不超过1000元):");
double money=sc.nextDouble();
if(money>0&&money%100==0&&money<1001) {
System.out.println("取了"+money);
System.out.println("交易完成,请取卡");
return;
} else {
System.out.println("金额有误,请重新输入");
}
}
}
}
}

}

原创粉丝点击