java学习日记(第五天)

本文介绍了编程中的分支结构(if、switch)、循环语句(while、for和do-while)以及几个实用案例,包括计算水仙花数、斐波那契数列、百僧百馍问题和猴子吃桃问题。
摘要由CSDN通过智能技术生成

复习:

选择分支结构中

第一种结构语句:if语句

if(条件){}        else{}

if(条件){}else if(){}else{}

多个else i结合效率低,因为对于if是条件都要进行判断

第二种结构语句:switch

底层原理:

switch(变量)------->字节码----->hashcode()(顺序的结构表)

在case变量中使用equals

使用场景:只要可以限定if条件语句的值,都可以使用switch,但如果是区间,只能用if,区间段的程序没法做switch等于:凡是字符串使用equals,凡是数值就可以使用等号。

二.新的知识

几种循环语句

1.while循环

while(条件){

        循环体

}

满足条件就进行循环体中语句的执行

2.for 循环

for(循环变初值;循环变量条件;循环变量增长量){

        循环体

}

第三种

do{

        循环体

}while(条件)

先做一次循环体,做完一次判断条件,如果满足条件,继续做循环体

经常用到的循环:for循环;while循环;do{}while循环

案例:

1.水仙花数:

public class shuixianhuashu {
    public static void main(String[] args) {
        //只找三位数的水仙花数
        for (int i = 100; i < 1000; i++) {
            if (fk(i)) {
                System.out.println(i);
            }
        }
    }

    public static boolean fk(int num) {
        int originalNum = num;
        int sum = 0;
        int weishu = (int) Math.log10(num) + 1;

        while (num > 0) {
            int digit = num % 10;
            sum += Math.pow(digit, weishu);
            num /= 10;
        }

        return sum == originalNum;
    }
}

水仙花数:原本的含义是三位数里个十百位数的3次方的和等于这个数

所以先算出位数weishu,用lg函数。百位数的lg函数值为2,所以加一后求出位数3

随后while循环逐一循环找出每一位数,在用pow函数求出每一位数的三次幂并加起来

和原本的传过来的sum数进行比较。如果比较后相同就返回数。

2.斐波那契数列

import java.util.Scanner;

public class shengtuzi {
    public static void main(String[] args) {
        int n = 10;
        for (int i = 0; i < n; i++) {
            System.out.print(fk2(i)+" ");
        }
    }

    public static int fk2(int n) {
        if (n == 0 || n == 1) {
            return n;
        } else {
            return fk2(n - 1) + fk2(n - 2);
        }
    }
}

斐波那契数列数学上不解释,最后总结后为f(n)=f(n-1)+f(n-2)

所以在函数上完成定义即可。

3.百僧百馍

public class onehundred {
    public static void main(String[] args) {
        int i;
        int j;
        for (i=0;i<34;i++){
            for (j=0;j<100;j++) {
                if (3 * i + j / 3 == 100&&i+j==100) {
                    System.out.println("i=" + i + "j=" + j);
                }
            }
        }
    }
}

100个僧人一百个馍,大僧一个人吃三个,小僧三个人吃一个馍

程序非常简单,设两个自增,找到i+j=100和3*i+j/3=100同时满足的情况,就是答案。

可以简化一个未知数,另一个用100-i代替。但为了直观就还是两个未知数。

4.猴子吃桃

public class chitaozi {
    public static void main(String[] args) {
        int num=1;
        System.out.println(num);
        for(int n=1;n<10;n++){
            num=(num+1)*2;
            System.out.println(num);
        }
    }
}

猴子每天吃一半多一个桃子,第十天还剩一个桃子。

倒着分析,后一天的桃子加一乘以二就是昨天的桃子数。

所以很简单,构建算式就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值