一、顺序结构
从上往下依次执行
二、分支结构
1.if语句
三种
2.switch语句
(1)格式
switch (表达式) {//表达式:取值位byte、short、int、char,jdk5后可以是枚举,jdk7后可以是String
case 1:
语句体1;
break;
case 2: //case后面的值只能是字面量,不能是变量,且给出的值不允许重复
语句体2;
break;
...
default://表示所有情况不匹配时,执行该处内容
语句体n+1;
break;
}
(2)default的位置和省略
default可以放在任意位置,也可以省略。相当于一个备胎,但是不建议省略
(3)case穿透
如果不写break,所有语句体均执行,遇到大括号或者break为止!!!这就是语句穿透
使用:如果多个case语句重复,考虑使用case穿透解决代码!
public class switchDemo1 {
public static void main(String[] args) {
int number = 1;
switch (number){
case 1:
System.out.println("一");
break;
case 2:
System.out.println("二");
break;
case 3:
System.out.println("三");
break;
default:
System.out.println("没有这种选项");
break;
}
}
}
上面的这种写法重复,可以修改如下:
int number = 1;//下面这种写法是jdk12的新特性
switch(number):{
case 1 ->{
System.out.println("一");//当大括号里只有一句时,可以省略
}
case 2 ->{
System.out.println("二");
}
case 3 ->{
System.out.println("三");
}
default ->{
System.out.println("没有这种选项");
}
}
(4)扩展
switch和if第三种格式各自的使用场景
当我们需要对一个范围进行判断的时候,用if的第三种格式
当我们把有限个数据列举出来,选择其中一个执行的时候,用switch语句
三、循环结构
1.for循环
2.while循环
(1)练习:回文数
public class palindromicNumber {
public static void main(String[] args) {
//给一个整数x,如果x是一个回文整数,打印true,否则打印false
//回文数即正序读和倒序读都是一样的整数---->eg:121
//1.键盘录入数字
Scanner input = new Scanner(System.in);
//获取数字
System.out.println("请输入一个整数:");
int x = input.nextInt();//以x = 1234为例
//定义一个变量,记录最初x的值
int xx = x;
//一个数字,不是一个字符串 12321
// 先判断多少位?
//定义x的逆序
int temp = 0;
//2.利用循环从右向左获取每一个数字
while (x != 0){
//从右到左获取每一位数
int ge = x % 10;
x = x / 10;
//把当前获取到的数字拼接到最右边
temp = temp * 10 + ge;
System.out.println(ge+"----"+temp);
}
if (xx == temp){
System.out.println(true);
}
else {
System.out.println(false);
}
}
}
(2)练习:求商和余数
public class getQuotientAndRemainder {
public static void main(String[] args) {
//需求:给定两个整数,不使用乘法、除法和%运算符,得到商和余数
//1.键盘录入两个数
Scanner input = new Scanner(System.in);
System.out.println("输入被除数:");
int num1 = input.nextInt();
System.out.println("输入除数:");
int num2 = input.nextInt();
//定义一个临时变量,存储num1的值,当作被减数
int temp = num1;
//定义一个变量,计数相减的次数
int sum = 0;
//判断被除数和除数的大小,如果被除数大于除数,用被除数循环减除数
while (temp >= num2){
temp = temp - num2;
sum++;
}
if (num1 < num2){
System.out.println("商:0," + "余数:" + num1);
}
else{
System.out.println("商:" + sum + "余数:" + temp);
}
}
}
3.do…while循环
初始化语句;
do{
循环体;
条件控制语句;
}while(条件判断语句);
4.无限循环
5.跳转控制语句
continue:
不能单独存在的。只能存在于循环当中。
表示:跳过本次循环,继续执行下次循环。
6.Romand
Random跟Scanner一样,也是Java提前写好的类,我们不需要关心是如何实现的,只要直接使用就可以了。
使用步骤:
1.导包
import java.util.Random;
导包的动作必须出现在类定义的上边。
2.创建对象
Random r = new Random ();
上面这个格式里面,只有r是变量名,可以变,其他的都不允许变。
3.生成随机数
int number = r.nextInt(随机数的范围);
上面这个格式里面,只有number是变量名,可以变,其他的都不允许变。
随机数范围的特点:从0开始,不包含指定值。比如:参数为10,生成的范围[0,10)