JavaSE(上)-Day5
- 流程控制语句
- 顺序结构
- 分支结构
- 循环结构
- 流程控制语句练习
- 逢7过题目
- 平方根
- 质数判断
- 随机数猜测
流程控制语句
顺序结构
Java代码执行是自上而下的顺序结构
分支结构
- if分支(已掌握) (多应用范围)
- switch分支(有限个列举)
/*1.表达式最初只能是byte,short,int,char2.jdk5引入枚举3.jdk7引入String
*/
switch(表达式){ // 1.值必须是字面量,不可以是变量// 2.值不能相同// 3.全部没有匹配(没有break,case穿透也走),则走default语句case 值1:语句体1;break;case 值2:语句体2;break;...// default的位置是不固定的,不是必须存在的部分,可以省略default:语句体n+1;break;
}
- switch在JDK12引入新特性
package com.itheima.demo;import java.util.Scanner;/*** switch 新特性案例*/
public class WeekDay {static Scanner sc = new Scanner(System.in);public static void main(String[] args) {int num = sc.nextInt();String result = switch (num){case 1,2,3,4,5 -> "工作日";case 6,7-> "休息日";default-> "??";};System.out.println(result);}
}
循环结构
- 循环表示重复做某件事情。
- 循环要有明确的开始和结束条件
- for循环入门案例
package com.itheima.demo;/*** 打印五次helloWorld*/
public class ForDemo {public static void main(String[] args) {// (初始化语句;条件判断语句;条件控制语句)for (int i = 1; i <= 5; i++) {// 循环体System.out.println("Hello World");}}
}
- for循环累加思想练习
package com.itheima.demo;/*** 累加思想入门:求1~5的和*/
public class ForDemo {public static void main(String[] args) {// 变量的作用域是在当前大括号内,如果定义在for循环,for循环外无法使用,出了for循环变量就被销毁啦int sum = 0;for (int i = 1; i <= 5; i++) {sum += i;}System.out.println("和是:" + sum);}
}
- while循环入门案例
package com.itheima.demo;/*** while循环入门案例*/
public class WhileDemo {public static void main(String[] args) {// 初始化语句int i = 1;while (i <= 100) { // 条件判断语句System.out.println(i); // 循环体i++; // 条件控制语句}}
}
- 回文练习
package com.itheima.demo;import java.util.Scanner;/*** 输入一个数,判断是否是回文数*/
public class ForDemo3 {static Scanner sc = new Scanner(System.in);public static void main(String[] args) {System.out.print("请输入一个整数:");int number = sc.nextInt();// 方法一(涉及知识点String API, for循环):// 目的: 对一个数字进行前后的对比String str = String.valueOf(number);boolean result = true;for (int i = 0; i < str.length(); i++) {if (!str.substring(i, i + 1).equals(str.substring(str.length() - i - 1, str.length() - i))) {result = false;}}System.out.println(result);// 方法二(while循环):// 目的:得到一个倒着的数字,然后比较int zheng = number;int fan = 0;while (number != 0) {int weiNumber = number % 10;fan = fan * 10 + weiNumber;number /= 10;}System.out.println(zheng == fan);}
}
- do…while(了解)
- 无限循环(顾名思义)
// for(;;){循环体}
// while(true){循环体}(常用)
- continue关键字,结束本次循环,进入下次循环
- break关键字,跳出整个循环
流程控制语句练习
逢7过题目
package com.itheima.demo;/*** 1~100逢7过*/
public class ForDemo4 {public static void main(String[] args) {for (int i = 1; i <= 100; i++) {// 是7的倍数 或者个位或者十位是7if (i % 7 == 0 || i % 10 == 7 || i / 10 % 10 == 7) {System.out.println("过");continue;}System.out.println(i);}}
}
平方根
package com.itheima.demo;import java.util.Scanner;/*** 平方根 键盘输入大于等于2的整数,获取平方根的整数部分* 本题难点:思路*/
public class WhileDemo05 {static Scanner sc = new Scanner(System.in);public static void main(String[] args) {System.out.println("输入大于等于2的整数:");int num = sc.nextInt();for (int i = 1; i < num; i++) {if (i * i == num) {// 如果i*i == num;则i是num的平方根System.out.println(i + "是" + num + "的平方根");break;} else if (i * i < num && (i + 1) * (i + 1) > num) {// 如果i*i < num && (i+1)*(i+1) >num,则i是num平方根的整数部分System.out.println(i + "是" + num + "的平方根的整数部分");break;}}}
}
质数判断
package com.itheima.demo;import java.util.Scanner;/*** 键盘录入一个正整数,判断是否是质数*/
public class ForDemo5 {static Scanner sc = new Scanner(System.in);public static void main(String[] args) {System.out.println("请输入一个正整数:");int num = sc.nextInt();boolean result = true;// i到num的平方根为止就可以判断是否是质数for (int i = 2; i <= Math.sqrt(num); i++) {//只能被1或其本身整除的数是质数if (num % i == 0) {result = false;break;}}System.out.println("结果是" + result);}
}
随机数猜测
package com.itheima.demo;import java.util.Random;/*** 生成一个随机数(1~100),程序猜测这个数*/
public class ForDemo6 {// 引入Randomstatic Random random = new Random();public static void main(String[] args) {// 包头不包尾int min = 1;int max = 100;int num = random.nextInt(max - min + 1) + min;System.out.println("生成一个数(1~100):" + num);int count = 0;for (int i = 1; i <= num; i++) {count++;if (i == num) {System.out.println("随机数是:" + i);break;}}System.out.println("一共猜了" + count + "次");System.out.println("---优化后----");// 代码优化// 二分查找法int count2 = 0;int i = 0;do {if (i < num) {min = i + 1;} else {max = i - 1;}i = (min + max) / 2;count2++;System.out.println("第" + count2 + "次猜" + i);} while (i != num);System.out.println("随机数是:" + i);System.out.println("一共猜了" + count2 + "次");}
}