第六章:Java基础知识(二)

Java流程图

流程控制

1. 分类

  • 顺序结构:自上而下顺序执行;
  • 分支结构:满足一定条件执行,否则不执行;
  • 循环结构:满足一定条件,重复执行;

2. 顺序结构

定义:代码按照自上而下顺序执行。

3. 分支结构

定义:满足一定条件,代码才执行,否则不执行。

  • 分类

    • if...else...
    • switch
  • if结构:最简单的分支结构;

    • 语法结构
    if(判断条件){
        满足条件执行的代码
    }
    
    • 注意
      • if是一个关键字,区分大小写;
      • if后面必须在()号内放置一个boolean类型的值,或者返回值是boolean类型的表达式;
      • if判断条件后面不能加;号,否则会导致后面的代码直接执行,与if条件无关;
      • {}号中的内容可以是一句代码,也可以是多行代码;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int age = 18;
            if(age>=18) {
                System.out.println("欢迎进入!");
            }
        }
    }
    
    图1.if语句
  • if...else...结构:满足和不满足分别执行不同的代码;

    • 语法结构
    if(判断条件){
        满足条件执行的代码
    }else{  // 否则
        不满足条件执行的代码
    }
    
    • 注意
      • if和else是一个组合,两个{}中的代码只会执行一个;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int age = 16;
            if(age>=18) {
                System.out.println("欢迎进入!");
            }else {
                System.out.println("禁止入内!");
            }
        }
    }
    
    图2.if...else语句
  • if(){}else if(){}else if(){}...else{}结构

    • 语法结构
    if(条件1){
        满足条件1时候执行的代码
    }else if(条件2){
        满足条件2时候执行的代码
    }else if(条件3){
        满足条件3时候执行的代码
    }...else{
        前面的条件都不满足时候执行的代码
    }
    
    • 注意
      • 这是多重判断;
      • 可以对多个值进行匹配;
      • 如果匹配成功,只会执行其中一个满足条件的代码;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int month = 4;
            if((month==3) || (month==4) || (month==5)){
                System.out.println(month + "月份是春季");
            }else if((month==6) || (month==7) || (month==8)){
                System.out.println(month + "月份是夏季");
            }else if((month==9) || (month==10) || (month==11)){
                System.out.println(month + "月份是秋季");
            }else if((month==1) || (month==2) || (month==12)){
                System.out.println(month + "月份是冬季");
            }else{
            System.out.println(month + "月份不存在");
            }
        }
    }
    
    图3.if(){}else if(){}else{}语句
  • if嵌套:if条件语句中再次添加判断;

    • 语法结构
    if(条件1){
        if(条件2){
            同时满足条件1和条件2时候执行的代码
        }else{
            满足条件1,不满足条件2时候执行的代码
        }
    }else{
        不满足条件1时候执行的代码
    }
    
  • switch分支结构

    • 语法结构
    变量key;
    switch(key){
        case value1:
            key==value1 时候执行的代码;
            break;
        case value2:
            key==value2 时候执行的代码
            break;
        ...
        // 如果key和所有的value都不匹配,就执行default
        default:
            ...
            break;
    }
    
    • 注意
      • 与case搭配使用;
      • 根据key不断匹配value值,如果匹配上则执行对应代码,其他不执行;
    • case穿透
      • 定义:case穿透是指在switch中一段代码执行结束后没有break结束,造成执行了其他case中代码的情况;
      • 危害:可能会执行一些不相干的代码;
      • 好处:当多个判断返回同一个结果的时候可以利用case穿透;
    • default
      • 在switch中,如果所有的case都没有匹配到key的值,就会执行default中的内容;
      • default代码块可以放置在任意独立位置;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int month = 4;
            switch(month){
                case 12:
                case 1:
                case 2:
                    System.out.println(month + "月份是冬季");
                    break;
        
                case 3:
                case 4:
                case 5:
                    System.out.println(month + "月份是春季");
                    break;
        
                case 6:
                case 7:
                case 8:
                    System.out.println(month + "月份是夏季");
                    break;
    
                case 9:
                case 10:
                case 11:
                    System.out.println(month + "月份是秋季");
                    break;
            
                default:
                    System.out.println(month + "不存在");
                    break;
            }
        }
    }
    
    图4.switch语句

4. 循环结构

定义:满足一定条件下,可重复执行的语句。

  • 分类

    • for循环
    • while循环
    • do...while循环
  • for循环

    • 语法结构
    /**
     * 初始化语句:又叫循环前表达式
     * 条件判断语句:又叫关系表达式
     * 条件控制语句:又叫循环后表达式
     */
    for(初始化语句; 条件判断语句; 条件控制语句){
      循环体
    }
    
    • for循环执行流程
      • 执行初始化语句
      • 执行条件判断语句
        • 如果返回true,就继续执行
        • 如果返回false,就结束循环
      • 执行循环体
      • 执行条件控制语句
      • 再次执行条件判断语句,重复循环
    public class Forloop {
    
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          //定义各位、十位、百位
          int gw, sw, bw;
          //定义计数器
          int count = 0;
          //for循环
          for(int i = 0; i < 1000; i++) {
              //获取个位、十位、百位字面值
              gw = i % 10;
              sw = i / 10 % 10;
              bw = i / 100;
              //判断是否为水仙花数
              if((gw*gw*gw+sw*sw*sw+bw*bw*bw) == i) {
                  System.out.println(i + "是一个水仙花数");
                  count++;
              }
          }
          System.out.println("1000以内一共有"+count+"个水仙花数");
      }
    }
    
    图5.for循环
    • 注意事项

      • 初始化语句,在循环开始前执行,无论循环多少次,只执行一次
      • 条件判断语句,其结果必须是boolean值
      • 循环体,如果只有一句话,花括号可省略,建议不要省略
      • 条件控制语句,在循环体执行完之后执行
    • for循环特殊形式

      • 条件判断语句省略,无限循环
      //条件永为true
      for(i=1; ;i++){}
      
      • 条件控制语句省略,无限循环
      //条件永为true
      for(int i = 1; i<=100;){}
      
      • 初始化语句和条件控制语句省略,无限循环
      for(;true;){}
      
      • 条件判断语句和条件控制语句省略,无限循环
      for(int i = 1;;){}
      
      • 三个语句都省略
      //相当于while(true)语句
      for(;;){}
      
  • while循环

    • 语法结构
    初始化语句
    while(条件判断语句){
      循环体
      条件控制语句
    }
    
    • while循环执行流程
      • 执行初始化语句
      • 执行条件判断语句
        • 如果是true,就继续执行
        • 如果是false,就结束循环
      • 执行循环体
      • 执行条件控制语句
      • 再执行条件判断语句,重复循环
    public class Whileloop {
    
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          int i = 1;
          int sum = 0;
          while(i <= 100) {
              sum += i;
              i++;
          }
          System.out.println(sum);
      }
    
    }
    
    图6.while循环
    • 注意事项

      • 一般将while循环看作是for循环的简写格式
      • 一般在循环次数不明确的情况下使用
      • 条件控制语句也属于循环语句
    • while循环特殊形式

    //当条件判断语句一直是true,while进入死循环
    while(true){}
    
  • do...while循环

    • 语法结构
    初始化语句
    do{
      循环体
      条件控制语句
    }while(条件判断语句);
    
    • do...while循环执行流程

      • 执行初始化语句
      • 执行循环体
      • 执行条件控制语句
      • 执行条件判断语句
        • 如果为true,就继续循环
        • 如果为false,就结束循环
    • 注意事项

      • 无论条件是否成立,都会执行循环体,直到条件判断语句为false结束
      • 所以,循环体至少执行一次
  • break、continue和return关键字

    • break作用

      • 在switch语句和循环中使用
      • 结束switch语句或终止并跳出循环
      • 只能终止所在循环体,不能终止父循环
    • continue作用

      • 终止本次循环,并跳过本次循环continue后的代码,进入下轮循环
    • return作用

      • 返回,是与方法对应的,可写在方法体的任意地方
      • 结束整个方法,return后的代码都不执行
    • break和continue也可用于父循环

    public static void main(String[] args) {
      
       w:for (int i = 0; i < 10; i++ ) {
          //外循环语句
          System.out.println("外循环语句.....前");
          for (int j = 0; j < 10; j++) {
              break w;
          }
          System.out.println("外循环语句.....后");
       }
    }
    

键盘录入-Scanner

作用:给用户提供输入的通道。

1. 使用

  • 导包:import java.util.Scanner
  • 创建键盘录入对象:Scanner input = new Scanner(System.in)
  • 提示用户输入内容:System.out.println("请输入任意内容:")
  • 获取用户输入内容:String str = input.next()
  • 使用所获取的数据;
//1、导包
import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //2、创建键盘录入对象
        Scanner input = new Scanner(System.in);
        //3、提示用户输入内容
        System.out.println("请输入任意内容:");
        //4、获取用户输入内容
        String str = input.next();
        //使用所获取的数据
        System.out.println(str);
    }
}
图7.Scanner使用

2. 注意

  • 不同的方法接受不同类型的参数,
input.next()    //获取任意内容,格式都会变成String字符串类型
input.nextInt() //获取整型int内容
input.nextDouble()  //获取double类型内容
input.nextBoolean() //获取boolean类型内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容