Java分支和if else循环

1. 分支结构

1.1 if 结构

1 if (/* 判断语句 true false */) {
2     // 语句体
3 }
4 /*
5 执行流程:
6     当程序运行到if结构时,首先判断if之后的小括号里面的判断语句是否为true,如果为true,执行语句体,如果为false,执行大括号以外的内容
7 */

1.2 if - else 结构

1 if (/* 判断语句 true false */) {
2     // true语句体
3 } else {
4     // false 语句体
5 }

执行流程:

当前程序运行到if - else 结构时,首先判断if之后小括号里面的内容结果是什么?如果为true执行true语句体,如果为false,执行false语句体。世界上最遥远的距离,是我再 if 里 ,你在 else 里。

1.3 if - else if 结构

1 if (/* 条件匹配 1 */) {
2     // 处理方式1
3 } else if (/* 条件匹配2 */) {
4     // 处理方式2
5 } else if (/* 条件匹配 3 */) {
6     // 处理方式3
7 } else {
8     // 没有任何匹配情况下的最终处理方式
9 }

执行流程:

当前程序运行到if - else if 结构时,匹配if之后的条件,找到对应匹配条件之后,执行对应的处理方式,如果没有任何一个条件匹配,执行else里面的处理方式。

1.4 switch - case结构

 1 switch (/* 条件匹配 */) {
 2     case /* 常量1 */:
 3         /* 处理方式1 */
 4         break;
 5     case /* 常量2 */:
 6         /* 处理方式2 */
 7         break;
 8     case /* 常量3 */:
 9         /* 处理方式3 */
10         break;
11     default:
12         /* 最终处理方式 */
13         break;
14 }

执行流程:

当程序运行到switch - case 结构,使用switch 之后小括号内的变量,匹配case之后的常量,找到对应的数据,按照对应的处理方式进行,如果没有任何一个条件匹配,执行default里面的处理方式。

注意事项:

  1. case 选择不能出现重复内容
  2. break可以省略,代码会继续执行到下一个break或者switch - case 大括号
  3. default可以省略,如果不需要可以不写default结构

2. 循环结构

2.1 为什么使用循环!!!

在代码中,出现了大量的重复的功能,使用CV大法可以解决,但是会导致以下一些问题:

  1. 代码过于臃肿!!!
  2. 代码阅读性极差!!!
  3. 代码的维护性极差!!!

2.2 while 循环

1 while (/* 循环条件判断 */) {
2     // 循环体
3     // (循环条件变更)
4 }

执行流程:

代码执行到while循环结构时,首先判断while之后循环条件是否为true,如果为true执行循环体(带有循环条件变更),直到while之后的条件为false,终止循环!!!
Tips:快捷键:终止循环Ctrl + C

2.3 do - while 循环

1 do {
2     // 循环体
3     // 循环条件变更
4 } while (/* 循环条件 */)

执行流程:

程序运行到do-while循环结构时,直接执行循环体(循环条件变更),再来判断 while之后的循环条件,如果循环条件为true,继续循环,直到条件为false,终止循环!!!

2.4 while 和 do while

while循环执行每一次循环体,都是在循环条件之下执行的,而do - while第一次执行循环体,是没有任何的约束的。

所以,如果在开发中可以使用while也可以使用do while,这里建议尽量使用while循环。

已知,可控

2.5 for 循环

1 for (/*循环条件初始化*/;/*循环条件判断*/;/*循环条件变更*/) {
2     // 循环体
3 }

for循环同样需要变量初始化,判断表达式,计数器自增,循环体,在固定次数的情况下for循环比while循环更加简洁。不能固定次数的时候必须使用while或者do-while。

重点for循环的执行顺序,中括号内标注序号,其中1只执行一次,注意计数器自增是每次循环执行一轮的最后才执行的,注意:一轮,最后。

2.6 Scanner的使用

1 代码中需要用户修改数据,从而满足其他需求,但是我们不能要求用户修改代码,重新编译,重新执行!!!
2 需要在代码中提供一个让用户输入数据的方式:
3 
4 1. 点技能点!!!【导包】
5 在class之前
6     import java.util.Scanner;
7 
8 2. 创建一个Scanner的"变量"
9     Scanner sc = new Scanner(System.in);
10 
11 3. 使用Scanner扫描器中的一些方法,从键盘上获取用户输入的数据
12     获取int类型数据 int num = sc.nextInt(); 
13     获取float类型数据 float num = sc.nextFloat(); 
14     获取double类型数据 double num = sc.nextDouble(); 
15     获取char类型数据 char ch = sc.nextLine().charAt(0);

区别:

1、while循环是先判断后执行
2、do - while循环是先执行一遍再判断
3、for循环同样需要变量初始化,判断表达式,计数器自增,循环体,在固定次数的情况下for循环比while循环更加简洁。不能固定次数的时候必须使用while或者do-while。

例题

1、输入任意数字,得出顺序相反的数字

 1 import java.util.Scanner;
 2 public class Test13 {
 3     public static void main(String[] args) {
 4         //输入任意数字,得出顺序相反的数字
 5         Scanner input = new Scanner(System.in);
 6         System.out.print("请输入数字:");
 7         int num = input.nextInt();
 8         while(num > 0) {
 9             System.out.print(num%10);
10             num /= 10;
11         }
12     }
13 }

2、用for循环输出100次好好学习

1 public class Test5 {
2     public static void main(String[] args) {
3         //用for循环输出100次好好学习
4         for(int i = 1;i <= 100;i++) {
5             System.out.println("第"+i+"好好学习");
6         }
7     }
8 }

3、循环输入某同学S1结业考试的5门课成绩,并计算平均分

 1 import java.util.Scanner;
 2 public class Test6 {
 3     public static void main(String[] args) {
 4         //循环输入某同学S1结业考试的5门课成绩,并计算平均分
 5         int sum = 0;
 6         Scanner input = new Scanner(System.in);
 7         System.out.print("输入学生姓名:");
 8         String name = input.next();
 9         for(int i = 1;i < 6;i++) {
10             System.out.print("请输入5门功课在第"+i+"门的成绩:");
11             int score = input.nextInt();
12             sum =sum  + score;//sum +=score
13         }
14         double Ave = sum/5;
15         System.out.print("王紫的平均分是:" + Ave);
16     }
17 }

4、计算100以内(包括100)的偶数之和

 1 public class Test8 {
 2     public static void main(String[] args) {
 3         //计算100以内(包括100)的偶数之和
 4         int i = 0;
 5         int sum = 0;
 6         while(i < 100) {
 7             i = i + 2;
 8             sum = sum + i;
 9         }
10         System.out.println("100以内偶数之和为:" + sum);
11     }
12 }

5、输入数字判断的奇偶性,并计算该数字范围内的奇数偶数之和

 1 import java.util.Scanner;
 2 public class Test11 {
 3     public static void main(String[] args) {
 4         //输入数字判断的奇偶性,并计算该数字范围内的奇数偶数之和
 5         Scanner input = new Scanner(System.in);
 6         System.out.println("请输入正整数:");
 7         double num = input.nextDouble();
 8         //判断奇偶性
 9         if(num % 2 == 0) {
10             System.out.println(num + "是偶数");
11             //用for循环计算偶数之和
12             int sum = 0;
13             for(int i = 0;i < num;i +=2,sum+=i) {
14             }
15             System.out.println(num + "的偶数之和是:" + sum);
16             //判断奇偶性
17         }else if(num % 2 == 1) {
18             System.out.println(num + "是奇数");
19             //计算奇数之和
20             int sum = 1;
21             int i = 1;
22             while(i < num) {
23                 i += 2;
24                 sum +=i;
25             }
26             System.out.println(num + "的奇数之和是:" + sum);
27         }
28         
29     }
30 }

6、打印小星星

/*         L  *
   *  *      1  1  
   *  **     2  2
   *  ***    3  3
   *  ****   4  4
   *  *****  5  5
   *  
   */
 1 public class Test15 {
 2     public static void main(String[] args) {
 3         /*         L  *
 4          *  *      1  1  
 5          *  **     2  2
 6          *  ***    3  3
 7          *  ****   4  4
 8          *  *****  5  5
 9          *  
10          */ 
11         
12         //1.外层循环控制站视的行数
13         for(int i = 1; i < 12;i ++) {
14             //2。内层循环控制每一层展示的内容
15             for(int j = 1;j <= i;j ++) {
16                 System.out.print("*");
17             }
18             System.out.println();
19         }
20     }
21 }
/*    
   *               L  _  *
   *      *        1  4  1
   *     ***       2  3  3
   *    *****      3  2  5
   *   *******     4  1  7
   *  *********    5  0  9
   *  
   */
 1 public class Test16 {
 2     public static void main(String[] args) {
 3         /*    
 4          *               L  _  *
 5          *      *        1  4  1
 6          *     ***       2  3  3
 7          *    *****      3  2  5
 8          *   *******     4  1  7
 9          *  *********    5  0  9
10          *  
11          */
12         
13         //1.控制总行数
14         for(int i = 1;i <=25;i ++) {
15             //2.处理空格,空格= 总行数 - 行号
16             for(int j = 1;j <= 25 - i;j ++) {
17                 System.out.print(' ');
18             }
19             
20             //3.处理星星  星星个数是当前行号*2 - 1
21             for(int k = 1;k <= i*2 - 1;k ++) {
22                 System.out.print("*");
23             }
24             System.out.println();
25             
26         }
27     }
28 }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容