目录
流程控制语句
1.顺序结构
按照代码的先后顺序,从上向下运行,就是顺序结构
2.分支结构(if、switch)
if语句
//if语句第一种格式
if(关系表达式){
语句体;
}
//if语句第二种格式
if(关系表达式){
语句体1;
}else{
语句体2;
}
//if语句第三种格式
if(关系表达式){
语句体1;
}else if(关系表达式2){
语句体2;
}else{
语句体n;
}
如果语句体重只有一行代码,大括号可以不写,但是建议写上,因为可能有下面语句:
int a = 100;是两句代码:1.定义变量a 2.给变量a赋值为100
如果对布尔类型的变量进行判断,可以不用==号,而是直接写布尔变量。(避免写成=
赋值语句了)
switch语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3.1, 值3.2,...
语句3
break;
...
default:
语句体n+1;
break;
}
注意:括号里的表达式是将要匹配的值,取值为byte、short、int、char
JDK5以后可以是枚举,JDK7以后可以是String
case后面跟的是被匹配的值,case后面只能是字面量,不能是变量,case给的值不能重复。
default的位置和省略:
1.省略:default可以省略,语法无问题,但是不建议省略
2.位置:default不一定卸载最下面,可以写在任意位置,但习惯卸载最下面
case穿透:语句体当中没写break,不会从break这里跳出循环而多执行部分代码
switch新特性(JDK12):(优化语句体和break)(使用冒号:替换为->加上括号)
int number = 1;
switch(number) {
//不会发生case穿透
//大括号里只有一行代码的话,可以省略
case 1 -> {
System.out.println("1");
}
case 2 -> System.out.println("2");
default -> {
System.out.println("其他");
}
}
3.循环结构(for、while、do-while)
//for循环格式
for(初始化语句; 条件判断语句; 条件控制语句){
循环体语句;
}
//while循环格式
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
//do-while循环格式(先执行后判断,至少执行一次)
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
例题1:判断回文
public class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 定义原数字
int x;
x = sc.nextInt();
// 打标记
boolean flag = true;
// 用临时变量m记录原来x的值,便于比较。
// 用y记录x的翻转值
int m = x;
int y = 0;
// 只要m不为0就循环
while(m != 0){
//从右往左获取每一位数字
int temp = m % 10;
//修改m的值
m /= 10;
//将当前获取到的数字拼接到最右边
y = y * 10 + temp;
}
if(y != x) flag = false;
System.out.println(flag);
}
}
例题2:求除数和余数(不用除法/和模%)
思路:可以用减法,减的次数等于除数,剩下的为余数
下面的代码没有考虑正负
public class Test4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 定义被除数a和除数b
int a, b;
a = sc.nextInt();
b = sc.nextInt();
// 记录次数(等价于商)
int cnt = 0;
// 可以模拟下12/5或者12/4来判断循环结束条件
while(a >= b){
a -= b;
cnt++;
}
System.out.println(cnt);
System.out.println(a);
}
}
昨天和今天看了好久姜萍事件,太上头了,导致昨天没学习...