循环结构--for/while/do..while

一、for语句

    for(初始化语句; 循环判断语句; 循环后的操作表达式){
        循环体;

    }

    for循环的初始化表达式能否定义在for循环外面?
        可以. 
        无限循环: for(;;){}   while(true){}
    for循环的初始化表达式和判断条件以及控制循环语句能否有多条?
        可以
        for(int i = 0, j = 100; (i <= 100) && (j >= 0); i++,j--){
            System.out.println(i+","+j);

        }

例题:

求出1到100之间的既是3的倍数又是5倍数的数字之和.

public class Task02 {
	public static void main(String[] args) {
		int sum = 0;
		
		for(int i=1; i<=100; i++){
			if(i%3==0 && i%5 == 0){
//				System.out.println(i);
				sum +=i;
			}
		}
		
		System.out.println(sum);
	}
}

找出所有三位数中, 满足如下要求的数字, 并求和

                  1.数字的个位数不为7;

                  2.数字的十位数不为5;

                  3.数字的百位数不为3;

public class Task03 {
	public static void main(String[] args) {
		int sum = 0;
		
		for(int i=100; i<=999; i++){
			int a = i%10;
			int b = i/10%10;
			int c = i/100;
			
			if(a!=7 && b!=5 && c!=3){
//				System.out.println(i);
				sum += i;
			}
		}
		System.out.println(sum);
	}
}

1.打印1到100之内的整数,但数字中包含9的要跳过

2.每行输出5个满足条件的数,之间用空格分隔

3.如:1 2 3 4 5

public class Ex02 {
	public static void main(String[] args) {
		int num = 1;
		
		for(int i=1; i<=99; i++){
			int a = i%10;
			int b = i/10;
			
			if(a!=9 && b!=9){
				System.out.print(i + " ");
				if(num%5 == 0)
					System.out.println();
				num++;
			}
		}
	}
}

循环录入学员Java课程的成绩(学员数量由键盘录入),统计分数大于等于80分的学生的比例。

import java.util.Scanner;

public class Ex06 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int count = 0;
		
		System.out.println("请输入总学生数:");
		int total = sc.nextInt();
		
		for(int i=1; i<=total; i++){
			System.out.println("请输入第" + i + "个学生的成绩:");
			int score = sc.nextInt();
			if(score<80)
				continue;
			else
				count++;
		}
		
		double rate = (double)count/total;
		System.out.println("比例是:" + rate);
		
		sc.close();
	}
}

二、while语句

    初始化语句;
    while(判断条件语句) {
        循环体语句;
        控制条件语句;

    }

例题:

请按如下要求编写程序,打印菜单:

                  1.从键盘上录入一个1到5的数字;

                  2.当数字为1时打印菜单"新建";

                    当数字为2时打印菜单"打开文件";

                    当数字为3时打印菜单"保存";

                    当数字为4时打印菜单"刷新";

                    当数字为5时打印菜单"退出",并退出程序;

                    此行代码可以终止java程序运行:System.exit(0);

import java.util.Scanner;

public class Task04 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		boolean flag = true;
		/*loo :*/ while(flag){
			System.out.println("请输入1~5的数字:");
			int num = sc.nextInt();
			
			switch (num) {
			case 1:
				System.out.println("新建");
				break;
			case 2:
				System.out.println("打开文件");
				break;
			case 3:
				System.out.println("保存");
				break;
			case 4:
				System.out.println("刷新");
				break;
			case 5:
				System.out.println("退出");
				//System.exit(0);    -->方法2
				//break loo;		 -->方法3
				flag = false;	//	 -->方法1
				break;
			default:
				System.out.println("请输入1~5的数字!");
				break;
			}
		}
		sc.close();
	}
}

分析以下需求,并用代码实现:

         1.珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.0001米。

         2.请问,我折叠多少次,可以折成珠穆朗玛峰的高度。(结果是27次)

public class Ex01 {
	public static void main(String[] args) {
		int mon = 8848;
		double pap = 0.0001;
		int count = 0;
		
		while(pap<mon){
			pap *= 2;
			count++;
		}
		
		System.out.println("一共折叠" + count + "次");
		
	}
}

循环录入某学生的5门课程的成绩并计算平均分。如果某分数录入为负,则停止录入并提示录入错误。

import java.util.Scanner;

public class Ex04 {
	public static void main(String[] args) {
		int sum = 0;
		int avg = 0;
		boolean flag = true;
		String name;
		
		Scanner sc = new Scanner(System.in);
		while(flag){
			System.out.println("请输入学生姓名:");
			name = sc.nextLine();
			
			System.out.println("请输入五门成绩:");
			for(int i=1; i<=5; i++){
				int score = sc.nextInt();
				if(score<0){
					System.out.println("输入错误,程序结束!");
					flag = false;
				}
				sum += score;
			}
			avg = sum/5;
			System.out.println(name + "的总成绩为:" + sum);
			System.out.println(name + "的平均分为:" + avg);
			System.out.println("-------------");
		}
		sc.close();
	}
}

三、do..while语句

    初始化语句;
     do {
        循环体语句;
        控制条件语句;

    }while(判断条件语句);

    三种循环的区别
        1. (for循环while)和do..while的区别, for循环和while循环都必须在条件满足的情况下, 才可以执行循环体.
            然而do..while循环则不然, 它是无论条件是否满足, 都至少执行一次循环体.
        2. for和while的区别, for循环在运行结束后, 内部定义的变量将会从内存中释放掉, 这时再想使用控制循环的变量.
            就找不到了, 所以, 如果今后想要在循环结束后, 继续使用那个控制循环的变量, 推荐使用while循环.

四、break和continue语句

    break作用:可以用于跳出循环和switch语句
    break的应用场景:只能用于循环和switch语句

    continue作用:跳过本次循环, 继续下一次循环.

    continue的应用场景:只能在循环中使用.

例题:

假设一个简单的在ATM的取款过程如下:首先提示用户输入密码(password),

最多只能输入3次,超过3次则提示用户"密码错误,请取卡"交易结束。

如果用户密码正确,再提示用户输入金额(amount),ATM只能输出100元的纸币,一次取钱数要求最低0元,最高1000元。

如果用户输入的金额符合上述要求,则打印输出用户取的钱数,最后提示用户"交易完成,请取卡",否则提示用户重新输入金额。假设用户密码是"111111"。

打印格式:

第一种情况:三次密码输入错误

请输入密码:2

密码错误,请重新输入:3

密码错误,请重新输入:4

密码错误,请取卡

第二种情况:密码输入正确,可以取款

请输入密码:2

密码错误,请重新输入:111111

请输入取款金额:3000

您输入的取款金额有误,请重新输入:900

请取走现金:900元

交易完成,请取卡

import java.util.Scanner;

public class Ex07 {
	public static void main(String[] args) {
		int passwd = 123;
		int count = 1;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入密码:");
		while(true){
			int userPWD = sc.nextInt();
			if(userPWD != passwd){
				if(count == 3){
					System.out.println("密码错误!请取卡!");
					break;
				}
				System.out.println("密码错误,请重新输入:");
				count++;
			} else{
				System.out.println("请输入取款金额:");
				while(true){
					int money = sc.nextInt();
					if(money%100==0 && money>=100 &&money<=3000){
						System.out.println("请取走您的现金:" + money + "元");
						System.out.println("交易完成,请取卡");
						System.exit(0);
					} else {
						System.out.println("您输入的金额有误,请重新输入:");
					}
				}
			}
		}	
		sc.close();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值