Java中的逻辑控制语句
1. 顺序结构
顺序结构中,代码按照书写顺序一行一行执行,如果调整代码的顺序,执行的顺序也随之发生改变,如下:
public static void main1(String[] args) {
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
}
//执行结果:
aaa
bbb
ccc
2、分支结构
2.1 if 语句
语法形式:
if语句语法结构主要分为三种,分别是:单分支结构、双分支结构、多分支结构,双分支结构为:
public static void main2(String[] args) {
int a = 1;
if(a==1){//if()括号中的表达式为布尔型;否则报错;
System.out.println("yes");//满足条件时运行的代码;
}else{
System.out.println("no");//不满足条件时运行的代码;
}
}
多分支结构为:
public static void main2(String[] args) {
int a = 1;
if(a==1){
System.out.println("yes");//满足条件时执行代码;
}else if(a>1){
System.out.println("no");//满足a>1条件执行代码;
}else{
System.out.println("no");//以上两个条件都不满足时执行代码;
}
}
if 语句解决问题:
①输入年龄,进行判断并输出;
public static void main1(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("输入年龄:");
int num = scan.nextInt();
if(num<140){
if(num<=18){
System.out.println("少年");
}else if(num>=19&&num<=28){
System.out.println("青年");
}else if(num>=29&&num<=55){
System.out.println("中年");
}else{
System.out.println("老年");
}
}
if(num>=140){
System.out.println("输入错误!");
}
}
②输入年份,判断是不是闰年;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("输入年份:");
int year = scan.nextInt();
if(year%100==0){
if(year%400==0){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"不是闰年");
}
}else{
if(year%4==0){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"不是闰年");
}
}
}
注意事项:
①else悬垂问题:if/else语句中不加大括号也可以写语句,不加大括号是,else与离它最近的if匹配,运行中可能出现错误,建议最好加上大括号;
②Java中if语句书写时,最好将大括号与if/else放在同一行;
③注意if()后边不能加封号,加上封号,大括号中的语句就与if无关,运行会出错;
2.2 switch 语句
语法格式:
public static void main4(String[] args) {
int a = 1;
switch (a){//根据switch中的值,执行对应的case语句;
case 1:
System.out.println("1");
break;//遇到break,结束该case语句;
case 2:
System.out.println("2");
break;
default:
System.out.println("错误");//如果没有对应的case语句,执行default语句;
break;
}
}
注意事项:
①不能遗漏break,否则case语句依次向下执行,失去多分支的效果;
②switch中的值,只能是整数、枚举、字符、字符串,输入其他类型会出现不兼容错误;
③switch不能表达复杂的条件,因此if比switch更加常用;
④switch支持嵌套,但是代码书写出来不太美观,因此不建议用switch嵌套;
3、循环结构
3.1 while 循环
语法格式:
public static void main5(String[] args) {//打印1-10的整数;
int a = 1;
while(a<=10){//循环条件为真,则执行大括号中的循环语句,否则结束循环;
System.out.println(a);
a++;
}
}
while 循环解决问题:
①计算1-100的和:
public static void main(String[] args) {//计算1-100的和;
int i = 0;
int j = 0;
while(i<=100){
j += i;
i++;
}
System.out.println(j);
}
②计算1-5整数阶乘的和;
public static void main8(String[] args) {//计算1-5的阶乘的和;
int j = 1;
int num = 0;
while(j<=5){
int i = 1;
int fac = 1;//每个数字的阶乘,必须在循环中重置;
while(i<=j){
fac = fac*i;
i++;
}
j++;
num = num + fac;
}
System.out.println(num);
}
注意事项:
①和if语句一样,while()后可以不加大括号,但是不加大括号时,只支持一条语句,建议加上;
②大括号建议和while写在同一行;
③while()后边不要加封号,否则可能报错;
3.2 break
break可以让循环提前结束;
public static void main(String[] args) {
int i = 1;
while(i<=100){
if(i%3==0){
System.out.println(i);
break;
}
i++;
}
}
在循环中,遇到break,就会让循环提前结束;
3.3continue
continue的功能是跳过此次循环,进入下一次循环;
public static void main9(String[] args) {
int i = 1;
while(i<=100){
if(i%3==0){
System.out.println(i);
continue;//跳过此次循环,进行下次,不执行i++,进入死循环;
}
i++;
}
}
3.4 for 循环
语法格式:
public static void main12(String[] args) {//for循环计算1-100的和;
int sum = 0;
for(int i = 1;i<=100;i++){//表达式1;表达式2;表达式3,将初始化循环变量、循环条件、更新循环变量三部分总结到一起,不易遗落;
sum = sum + i;
}
System.out.println(sum);
}
代码示例:
public static void main8(String[] args) {//计算1/1-1/2+1/3...-1/100的值;
double sum = 0;
int flg = 1;
for(int a = 1;a<=100;a++){
sum += (1.0/a)*flg;//符合运算符,提升类型,不用强制类型转换;
flg = -flg;
}
System.out.println(sum);
}
public static void main9(String[] args) {//求1-100之间9出现的次数;
int sum = 0;
for(int i = 1;i<=100;i++){
if(i%10==9){
sum++;
}
if(i/10==9){
sum++;
}
}
System.out.println(sum);
}
注意事项与while循环一样;
3.5 do while 循环
语法格式:
public static void main(String[] args) {
int a = 1;
do{
a++;
}while(a<10);
System.out.println(a);
}
先执行循环语句,再判定循环条件;
注意事项:
①判断条件后的封号不要忘记;
②一般推荐使用for或while循环语句;