小白也能看懂的java的逻辑控制语句!!!

Java中的逻辑控制语句

一、顺序结构

关于顺序结构比较简单,就是按照一句一句地写代码,并无什么特殊点。

代码示例:

System.out.println(1);
System.out.println(2);
System.out.println(3);

//执行结果:
1
2
3

如果代码语句的顺序发生变化,最后的执行结果也会发生变化。

System.out.println(1);
System.out.println(3);
System.out.println(2);

//执行结果:
1
3
2

二、分支结构语句

1.if语句

(1)if语句的格式书写有三种:

第一种书写格式:

if(布尔表达式) {
    //执行语句
}

例子:如果小明考试得了95及以上,妈妈就带小明去游乐场玩。

Demo:

int score = 100;
if(score >= 95) {
    System.out.println("妈妈带小明出去玩!");
}

第二种书写格式:

if(布尔表达式) {
    //执行语句
} else {
    //执行语句
}

如果布尔表达式中的结果为true,则执行if中的语句,否则执行else中的语句。

例子:如果小明考了95分及以上,妈妈就带小明去玩,否则小明就去写作业。

Demo:

int score = 94;
if(score >= 95) {
    System.out.println("妈妈带小明出去玩!");
} else {
    System.out.println("小明去写作业");
}

第三种书写格式:

if(布尔表达式1) {
    //执行语句1
} else if(布尔表达式2) {
    //执行语句2
} else {
    //执行语句3
}

如果布尔表达式1中的结果为true,则执行语句1,反之如果布尔表达式1的结果为false,则看布尔表达式2中的结果,如果其结果为true,则执行语句2,反之执行语句3。

例子:如果小明考了95及以上,妈妈就带小明去玩,如果没有95分以上但是有90分及以上,妈妈就给小明买糖吃,如果都没有达到,小明去写作业。

Demo:

int score = 89;
if(score >= 95) {
    System.out.println("妈妈带小明出去玩!");
} else if(score >= 90) {
    System.out.println("妈妈给小明买糖吃!");
} else {
    System.out.println("小明去写作业!");
}
(2)if语句代码的练习

判断一个数是正数还是负数还是0:

Demo:

public class TestDemo {
    public static void main(String[] args) {
        System.out.println("请输入一个整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        if(num > 0) {
            System.out.println(num+"是正数!");
        } else if(num < 0) {
            System.out.println(num+"是负数!");
        } else {
            System.out.println(num+"是0!");
        }
    }
}
(3)注意事项
  • if( )中必须为布尔表达式,不能是赋值语句或者其他语句
  • if(布尔表达式);这种写法是错误的,因为if()这个括号后不能有“;”
  • 悬空else问题
public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        if (a==10)
            if (b==10) {
                System.out.println("haha!");
            } else {
                System.out.println("hehe!");
            }
    }
}


//执行结果:
hehe!

如果if/else语句中没有加大括号,也可以写语句,但是只能写一条,所以我们不建议这么去写代码,此时else和最近的if匹配,就像这里的else和第二个if语句匹配,正如代码所示,最后执行结果为hehe!是因为a=10,但是b不等于10,所以会执行else语句。

2.switch语句

(1)基本语法格式
switch(表达式) {
    case 目标值1:
        执行语句1
        break;
    case 目标值2:
        执行语句2
        break;
     ···
     
    case 目标值n:
        执行语句n
        break;
    default:\
        //当内容都不满足时执行此语句
        执行语句n+1
        break;
}

先表达式的值,然后这个值和case语句依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束,如果都不匹配就会执行default中的语句。

例子:根据day的值打印具体的星期几
Demo:

public class TestDemo {
    public static void main(String[] args) {
        System.out.println("请输入1-7中任意一个数字:");
        Scanner scanner = new Scanner(System.in);
        int day = scanner.nextInt();
        switch(day) {
            case 1:
                System.out.println("星期一!");
                break;
            case 2:
                System.out.println("星期二!");
                break;
            case 3:
                System.out.println("星期三!");
                break;
            case 4:
                System.out.println("星期四!");
                break;
            case 5:
                System.out.println("星期五!");
                break;
            case 6:
                System.out.println("星期六!");
                break;
            default :
                System.out.println("星期天!");
                break;
        }
    }
}


//执行结果:
3
星期三!
(2)注意事项
  • case语句后面的常数值不能相同。
  • switch语句括号中的表达式只能是以下类型:
    • 基本数据类型:byte,short,char,int
    • 引用数据类型:String字符串,枚举类型
  • case语句前后顺序可以颠倒,匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。
  • break不要遗漏,否则会失去多分支选择的效果。
  • switch语句中的表达式不能过于复杂,例:switch(num<20 && num>10) 这样的表达式就会报错。
  • switch语句虽然支持嵌套,但是一般不推荐!

例:

public class TestDemo {
    public static void main(String[] args) {
        int x = 1;
        int y = 2;
        switch (x) {
            case 1:
                switch (y) {
                    case 2:
                        System.out.println("好好学习!");
                        break;
                }
                break;
            case 2:
                System.out.println("天天向上!");
        }
    }
}

因为这样写的很不美观,实际中用的地方也不多。

三、循环语句

1.for循环语句

(1)基本格式

for(表达式1;布尔表达式2;表达式3) {
  //执行语句
}

注:表达式1是用于初始化循环变量初始值设置,在循环的最开始执行,且执行一次。

布尔表达式2是循环条件,如果满足循环条件的话,那就执行循环体中的语句,否则循环结束。

表达式3是循环变量更新的方式,如i++。

(2)代码的执行方式:

1->2->3->2->3···直到循环结束。

代码示例:

Demo1:打印1-20的数字

for (int i = 1;i <= 20;i++) {
    System.out.print(i + " ");
}

//执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

Demo2:计算1-20的和

int sum = 0;
for (int i = 1 ;i<=20;i++) {
     sum+=i;
}
System.out.println(sum);

//执行结果:
210

Demo3:计算5!

int ret = 1;
for(int i = 1;i<=5;i++) {
    ret*=i;
}
System.out.println(ret);
        
//执行结果:
120

Demo4:计算1!+2!+3!+4!+5!的和

int sum = 0;
for(int j = 1;j<=5;j++) {
     int ret = 1;
for(int i = 1;i<=j;i++) {
    ret*=i;
}
    sum+=ret;
}
    System.out.println(sum);

//执行结果:
153

2.while循环

(1)基本格式

while(循环条件) {
    //循环体
}

当循环条件为真时,进入循环,为假时,则循环结束。

(2)代码练习

Demo1:打印1-20数字

int i = 1;
while(i<=20) {
     System.out.print(i + " ");
     i++; 
}

//执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

Demo2: 计算1-20的和

int sum = 0;
int i = 1;
 while(i<=20) {
    sum+=i;
    i++;
}
System.out.println(sum);


//执行结果:
210

Demo3:计算5!

int ret = 1;
int i = 1;
while(i<=5) {
   ret*=i;
   i++;
}
System.out.println(ret);

//执行结果:
120

Demo4:计算1!+2! +3!+ 4!+5!的和

int sum = 0;
int i = 1;
while (i<=5) {
   int ret = 1;
   int j = 1;
while(j<=i) {
   ret*=j;
   j++;
}
   sum+=ret;
   i++;
}
System.out.println(sum);


//执行结果:
153

(3)注意事项

  • while和if语句一样,可以不用写上{},但是这样就只能在下面写一句代码行。
  • while( )后不要写分号,这样程序会报错。
int num = 1;
while (num <= 10); {
  System.out.println(num);
  num++;
}

// 执行结果
[无任何输出, 程序死循环]

此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码
死循环了.

3.do while循环

(1)基本格式

do {
    //循环体
}while(循环条件);

先将代码执行一遍,在判断循环条件,如果满足循环条件就再次进入循环,不满足则退出循环。

(2)代码练习

Demo1:打印1-10的数字

int i = 1;
do{
    System.out.print(i + " ");
    i++;
}while(i<=10);

//执行结果:
1 2 3 4 5 6 7 8 9 10 

Demo2:计算1-20的和

int i = 1;
int sum = 0;
do {
    sum+=i;
    i++;
}while(i<=20);
System.out.println(sum);

//执行结果:
210

Demo3:计算5!

int i = 1;
int ret = 1;
do {
    ret*=i;
    i++;
}while(i<=5);
System.out.println(ret);

//执行结果:
120

Demo4:计算1!+2!+3!+4!+5!的和

int sum = 0;
int i = 1;
do {
    int j=1;
    int ret = 1;
    do {
         ret*=j;
         j++;
       }while (j<=i);
     i++;
     sum+=ret;
   }while (i<=5);
 System.out.println(sum);

//执行结果:
153

(3)注意事项

  • 由于 do while 循环基本上不怎么用,推荐使用while和for循环代替。
  • 不要忘记while( )后的分号。

4.break语句

break语句的功能是让循环提前结束。

示例代码讲解:

for(int i=1;i<10;i++) {
    if(i==5) {
       break;
    }
     System.out.print(i + " ");
}

//执行结果:
1 2 3 4

因为当i=5的时候,遇到break语句代码就会终止循环,退出循环,所以只打印了最开始的1 2 3 4。

5.continue语句

continue 的功能是跳过这次循环, 立即进入下次循环。

示例代码讲解:

for(int i=1;i<10;i++) {
    if(i==5) { 
        continue;
    }
    System.out.print(i + " ");
}

//执行结果:
1 2 3 4 6 7 8 9

因为当i=5的时候,遇到continue语句,就会跳过此次循环,回到下一次循环的判断条件,所以没有打印5。

6.练习循环语句题目

(1)输入一个年份判断是否为闰年

Demo:

public class TestDemo {
    public static void main(String[] args) {
        for(int year = 1000;year<=2000;year++) {
            if((year%4==0 && year%100!=0) || year%400==0) {
                System.out.print(year+" ");
            }
        }
    }
}

//执行结果:
1004 1008 1012 1016····2000

(2)打印100-200之间的素数

Demo:

public class TestDemo {
    public static void main(String[] args) {
        for (int i = 100;i<=200;i++) {
            int j = 0;
            for ( j = 2;j<i;j++) {
                if(i%j==0) {
                    break;
                }
            }
            if(j==i) {
                System.out.print(i+" ");
            }
        }
    }
}

//执行结果:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 

(3)计算1/1-1/2+1/3-1/4+···+1/99-1/100的值

Demo:

public class TestDemo {
    public static void main(String[] args) {
        double sum = 0;
        int flag = 1;
        for(int i=1;i<=100;i++) {
            sum+=flag*1.0/i;
            flag=-flag; //变成负号
        }
        System.out.println(sum);
    }
}

//执行结果:
0.688172179310195
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要努力点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值