2020.7.9课堂笔记(单重循环for、while、do-while及练习)

Demo1:
循环结构:
1、while 先进行判断,再进行逻辑执行
需要四部分组成
初始化:变量的初始化
条件判断:必须要求返回true或者false的值
循环体:具体的要执行的逻辑代码
迭代变量:促使此循环结束
2、do while 先执行代码逻辑,再执行判断

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 14:04
 * @Description:
 **/
public class Demo1 {
    public static void main(String[] args) {
        //System.out.println("好好学习,天天向上");
        //1、定义一个变量
        //2、使用这个变量进行判断,只要满足条件,执行某块代码
        //3、改变变量以改变条件的结果,达到退出循环的目的
        int i=1;
        while(i<=10){
            System.out.println("第"+i+"次写:好好学习,天天向上");
            i++;
        }
        int a=1;
        while(a<=50){
            System.out.println("打印第"+a+"份试卷");
            a++;
        }
    }
}

Demo1_1:用for循环实现打印100次好好学习天天向上

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 15:17
 * @Description:用for循环实现打印100次好好学习天天向上
 **/
public class Demo1_1 {
    public static void main(String[] args) {
        for(int i=1;i<=100;i++){
            System.out.println("第"+i+"次写,好好学习,天天向上!");
        }
    }
}

Demo3:老师检查张浩学习成果

import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 14:22
 * @Description:老师检查张浩学习成果
 **/
public class Demo3 {
    public static void main(String[] args){
        boolean needStudy=true;
        while(needStudy){
            System.out.println("张浩学习");
            Scanner scanner =new Scanner(System.in);
            System.out.println("请老师给出结论,合格为false,不合格为true:");
            needStudy=scanner.nextBoolean();
        }
        System.out.println("恭喜张浩神功大成");
    }
}

Demo4:

import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 14:29
 * @Description:
 **/
public class Demo4 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        //张浩先做测试题
        //老师给出判断,如果不通过,则循环以上的过程
        System.out.println("张浩开始考试!");
        System.out.println("请老师给出结果,true为不通过,false为通过");
        boolean needTest=sc.nextBoolean();
        while (needTest==true){
            System.out.println("不合格");
            System.out.println("张浩开始考试!");
            System.out.println("请老师给出结果,true为不通过,false为通过");
            needTest=sc.nextBoolean();
        }
        System.out.println("恭喜张浩通过考试");
    }
}

Demo4_1:do_while实现考试验证

import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 14:41
 * @Description:do_while实现考试验证
 **/
public class Demo4_1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        boolean needTest;
        do{
            //可以减少重复代码
            System.out.println("张浩先来考试!");
            System.out.println("请老师给出评价,true为不通过,false为通过");
            needTest=sc.nextBoolean();
        }while(needTest==true);//不要忘记分号
    }
}

Demo5:循环输入5门课的成绩,并计算平均分
第三种循环结构是for循环,使用最多

语法规则:
	for(初始化1;条件表达式2;步进器4){
		代码逻辑3
	}
使用for循环的好处:
	1、代码简洁
	2、变量初始化的时候,for循环的作用域仅仅是当前for循环结构
		while循环的作用域是从变量的定义开始到整个方法结束
import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 15:22
 * @Description:循环输入5门课的成绩,并计算平均分
 **/
public class Demo5 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int sum=0;//定义一个总分
        for (int i = 0; i <5 ; i++) {
            System.out.print("请输入第"+(i+1)+"门课的成绩:");
            int score = sc.nextInt();
            sum+=score;
            }
        double avg=sum/(double)5;//隐式类型转换
        System.out.println(avg);
    }
}

Demo6:从控制台接收数字,打印加法表

import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 15:53
 * @Description:从控制台接收数字,打印加法表
 **/
public class Demo6 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        for(int i=0;i<=num;i++){
            System.out.println(i+" + "+(num-i)+" = "+num);
        }
    }
}

Test1:有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完?

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 14:49
 * @Description:有1020个西瓜,第一天卖掉总数的一般后多卖了2个
 * 以后每天卖剩下的一半多两个,问几天以后能卖完?
 **/
public class Test1 {
    public static void main(String[] args) {
        int num=1020;
        int day=0;
        do{
            num=num/2-2;
            day++;
        }while(num>0);
        System.out.println("经过"+day+"天瓜就卖完了");
    }
}

Test2:猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 14:56
 * @Description:猴子摘桃,循环9次,每次一半多一个,最后剩1个
 **/
public class Homework2 {
    public static void main(String[] args) {
        /*        int day;
        int sum=1;
        for (day = 1; day <10; day++) {
            sum=(sum+1)*2;
        }
        System.out.println("第一天共摘了"+sum+"个桃子");
*/
        System.out.println("第一天摘的桃子数:");
        int sum = getSum(1);
        System.out.println(sum);
    }
    public static int getSum(int day){
        if(day==10){
            return 1;
        }else{
            return ((getSum(day+1)+1)*2);
        }
    }
}

Test3:有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对? 分析:兔子的规律为数列,1,1,2,3,5,8,13,21

知识点:关于斐波拉契数列
可以考虑使用递归:

public static int getNumber(int number){
		if(number==1||number==2){
			return 1;
		}else{
			return getNumber(number-1)+getNumber(number-2);
		}
	}
递归函数:
	再程序运行过程中,有时需要调用程序本身,此时可以使用递归
	注意:
		再程序中,能不使用递归就不要使用递归
			使用递归的时候会加大资源的消耗
			如果递归的层次比较深,会造成栈溢出。
		如果不使用递归无法解决问题的话,就必须要使用递归
			比如:输出某个磁盘目录下的所有文件名称
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 16:11
 * @Description:
 **/
public class Homework3 {
    public static void main(String[] args) {
/*        int num1=1;
        int num2=1;
//        for (int i = 3; i <=12 ; i++) {
//            num2+=num1;
//            num1=num2-num1;
//        }
            for (int i = 3; i <=12 ; i+=2) {
            num1=num1+num2;
            num2=num1+num2;
        }      
*/
        int month=12;
        int num2 = getNum(month);
        System.out.println("一年内能繁殖"+num2+"对兔子");
    }
    public static int getNum(int i){
        if(i==1 || i==2){
            return 1;
        }else{
            return getNum(i-2)+getNum(i-1);
        }
    }
}

Test4:任意输入一个整数(小于10位),输出它一共有多少位。

import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 16:30
 * @Description:
 **/
public class Test4 {
    public static void main(String[] args) {
        System.out.println("请输入一个整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
//        String s = String.valueOf(num);
//        System.out.println(s.length());
        int count=1;
        while(num/10!=0){
            num=num/10;
            count++;
        }
        System.out.println("这个数一共"+count+"位");
    }
}

Test5:计算1000以内所有不能被7整除的整数之和

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 16:45
 * @Description:
 **/
public class Test5 {
    public static void main(String[] args) {
        int sum=0;
        for (int i = 1; i <1000 ; i++) {
            if(i%7!=0){
                sum+=i;
            }
        }
        System.out.println(sum);
    }
}

Test6:本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 16:49
 * @Description:
 **/
public class Test6 {
    public static void main(String[] args) {
        double money = 10000;
        for (int i = 1; i <=5 ; i++) {
            money=money*(1+0.003);
        }

        System.out.println("5年后,获得的本金是"+money);
    }
}

Test7:计算 1+2-3+4-5+6-7…+100的结果//注意审题

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 16:53
 * @Description:
 **/
public class Test7 {
    public static void main(String[] args) {
        int sum=1;
        for (int i = 2; i <=100 ; i++) {
            sum=(i%2==0)?(sum+=i):(sum-=i);
        }
        System.out.println(sum);
    }
}

Test8:一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 16:59
 * @Description:
 **/
public class Test8 {
    public static void main(String[] args) {
        double height=0.08;
        int count=0;
        while (height<=8848.13*1000){
            height=height*2;
            count++;
        }
        System.out.println(count+"次对折可以达到或超过珠穆朗玛峰的高度");
    }
}

Test9:从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 54321

import java.util.Scanner;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 17:08
 * @Description:
 **/
public class Test9 {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int num = scanner.nextInt();
        int sum=1;
        for (int i = 1; i <=num ; i++) {
            sum=sum*i;
        }
        System.out.println("阶乘为:"+sum);
    }
}

Test10:你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数

import java.util.Scanner;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/9 17:13
 * @Description:
 **/
public class Test10 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int id=0;
        int count1=0;
        int count2=0;
        do{
        System.out.println("请输入正整数:");
        id = sc.nextInt();
            if(id%2==0){
                count1++;
            }else{
                count2++;
            }
        }while(id!=-1);
        System.out.println("偶数的个数为"+count1+",奇数的个数为"+(count2-1));
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值