顺序结构
单线程下按照代码的书写顺序一行一行向下执行
1.if-else 分支
1.1只有if语句
if(布尔表达式){
//满足该分支的代码块
}
if(a>b){
System.out.println(aaa);
}
1.2if-else 分支
if(布尔表达式){
//
}else{
//条件不满时执行的代码
}
1.3if…[else if 0…N]…else多分支语句
if(布尔表达式){
} else if(布尔表达式){
} else {
//上述表达式都不符合的情况下执行的代码
}
int num =0;
if(num>0) {
System.out.println("正数");
} else if(num<0) {
System.out.println("负数");
} else{
System.out.println(0);
}
1.4分支语句的嵌套问题
分支语句的嵌套问题指的是在任意一个分支中,还可以嵌套分支
分支语句的表达式不宜过多,最多写两个以便于排查问题以及梳理思路
判断是否是闰年
int year =1000;
if(year%100==0) {
if(year%400==0) {//此时year一定是一个100的倍数求世纪闰年
System.out.println("闰年");
} else {
System.out.println("不是闰年");
}
} else {
if(year%4==0) {//此时的year一定是4的倍数求普通闰年
System.out.println("闰年");
} else {
System.out.println("不是闰年");
}
else自动匹配最近的if语句
1.5switch语句
switch(int|char|String|enum) {
case内容1:
满足内容1的语句;
break;
case内容2:
满足内容2的语句;
break;
case内容3:
满足内容3的语句;
break;
default:
上述所有分支都不满足的情况
判断季节
String season = "summer";
switch (season) {
case "spring":
System.out.println("春天");
break;
case "summer":
System.out.println("夏天");
break;
case "autumn":
System.out.println("秋天");
break;
default:
System.out.println("冬天");
break;
}
case不加break时,会从第一个满足的case分支开始一直向下执行直到碰到break为止或者把剩下所有分支全部执行结束
switch只有int、char、enum、String能使用,其他类型都不能使用switch分支
switch表示多重选择,使用时比较局限,没有if那么灵活
循环结构:某段代码可能会重复执行多次
1.6while循环
while(循环的终止条件) {
//循环体代码
}
循环体终止条件的表达式为true时,循环体代码就会执行直到表达式返回false,循环体代码就不会再执行
计算1-10的和
int num =1;
int ret =0;//存储最终的结果
while(num<=10) {
ret +=num;
num++;
}
System.out.println(ret);
计算5以内的阶乘之和
int num =1;
int ret = 0;//计算每个阶乘之和
while(num<=5) {
int tmpret = 1;
int tmp =1;
while(tmp<=num) {//记录当前num的阶乘
tmpret*=tmp;
tmp++;
}
//此时tmp存储当前的阶乘
ret+=tmpret;
num++;
}
System.out.println(ret);
在循环中,break和continue
break表示终止当前循环
continue表示跳过本次循环,继续下一次循环。
找出100-200第一个3的倍数
int num =100;
while(num<=200) {
if(num%3==0) {//判断num是不是3的倍数
System.out.println(num);
break;
}
num++;
}
找出100-200所有3的倍数
int num =100;
while(num<=200) {
if(num%3!=0) {//判断num是不是3的倍数
num++;
continue;//走到continue下面的就不再执行,继续下一次循环
}
System.out.println(num);
num++;
1.return;//终止当前方法的调用
2.break labal的使用
int num =100;
label:while(num<=200) {
int a =1;
while(a<=10) {
if(a%3==0) {
System.out.println(a);
break label;//直接跳出两次循环
}
a++;
}
1.7 for循环
for(初始条件;循环条件;更新循环变量) {
//循环体代码
}
1.初始化条件
2.循环终止条件
3.循环体代码
4.更新循环代码
执行顺序1234234…
1.2.3这三个条件都是可选的,可以全不写,全空
打印1到10的数字
for (int i = 1; i <=10 ; i++) {
System.out.println(i);
}
打印5!+4!+3!+2!+1!
int ret =0;
for (int i = 1; i <=5 ; i++) {
int tmpRet=1;//记录当前的阶乘值
for (int j = 1; j <=i ; j++) {
tmpRet*=j;
}
ret +=tmpRet;
}
System.out.println(ret);
1.8系统输出
System.out.println(msg);//输出一个字符串,带换行
System.out.print(msg);//输出一个字符串,不带换行
System.out.printf(format,msg);//格式化输出
1.9系统输入
系统输入:Scanner类
要使用Scanner类,必须要产生Scanner的对象
Scanner scanner = new Scanner(System.in);//从键盘中获取字符串
//输入
判断一个数字中9出现的次数
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int count=0;//记录9出现的次数
while(num!=0) {
if (num % 10 == 9) {
count++;
}
num = num / 10;
}
System.out.println(count);
从键盘中循环读入数字并相加
Scanner scanner = new Scanner(System.in);
int ret =0;
while(scanner.hasNextInt()) {//从键盘中读取的整数后才会继续循环,不是整数直接结束循环
int i = scanner.nextInt();
ret+=i;
}
System.out.println(ret);