复习:
选择分支结构中
第一种结构语句: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); } } }
猴子每天吃一半多一个桃子,第十天还剩一个桃子。
倒着分析,后一天的桃子加一乘以二就是昨天的桃子数。
所以很简单,构建算式就可以了。