尚硅谷_Java 学习笔记day4

==day4==

流程控制

  • 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑块

  • 三种基本流程结构:

    1. **顺序结构 **
    • 程序从上到下逐行执行,中间没有判断和跳转
    1. 分支结构
    • 根据条件选择性的执行某行某段代码

    • if-elseswitch-case两种分支语句

    1. 循环结构
    • 根据循环条件,重复性的执行某段代码
    • while do-while for三种循环语句
    • Jdk1.5 提供了foreach循环,方便的遍历集合。数组元素

if-else结构

//第一种:
if(条件表达式){
    执行表达式       
}
//第二种:二选一
if(条件表达式){
    执行表达式1
}else{
    执行表达式2
} 
//第三种:n选一
if(条件表达式){
    执行表达式1
}else if(条件表达式){
    执行表达式2
}else if(条件表达式){
    执行表达式3
}……
else{
    执行表达式n
}

使用Scanner从键盘获取int型数据

  1. 导包:import java.util.Scanner
  2. Scanner 的实例化:Scanner scan = new Scanner(System.in);
  3. 调用 Scanner 类的相关方法,来获取指定类型的变量
//1.导包
import java.until.Scanner;
class ScannerTest{
    public static void(String[] args){
        //2.Scanner的实例化
        Scanner scan = new Scanner(System.in);
        //3.调用Scanner类的相关方法
        System.out.println("请输入你的姓名");
        string name = scan.next();
        System.out.println(age);    
    
        System.out.println("请输入你的年龄");
        int age = scan.nextInt();
        System.out.println(age);
    }
}

公式:[a,b]: (int)(math.random() * (b - a + 1) + a)

switch-case结构

switch(表达式){
case 常量1:
    执行语句1;
    break;        
case 常量2:
    执行语句2;
    break;
...
default;
    执行语句n;
   // break;
}
  1. 根据switch表达式中的值一次匹配各个case 中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句
  2. break可以使用在switch-case结构中,表示一旦执行到此关键字,就跳除switch-case结构
  3. switch结构中的表达式只能是如下 6 种类型之一:==byteshortcharint、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)==
  4. case之后只能声明常量,不能声明范围
  5. break关键字是可选的
  6. default相当于if-else结构中的`else``
  7. default结构是可选的,位置是灵活的
class SwitchCaseTest{
    public static void(main[] args){
    
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入2019年的月份:");
         int month = scan.nextIn();
        System.out.println("请输入2019年的日期:");
         int day = scan.nextIn();
        
        int sumDays = 0;
        
        switch(month){
            case 12:
                sumDays += 30;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sunDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5;
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                sumDays += 29;
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;
        }
        System.out.println("2019年"+ month + "月" + day + "日是第" + sumDays + "天");
    }
}

循环结构

在某些条件满足的情况下,反复执行特定代码的功能,循环结构有4个要素:

  1. 初始化条件
  2. 循环条件(boolean类型)
  3. 循环体
  4. 迭代条件
for循环的结构
for(初始化条件;循环条件(boolean型);循环体){
    迭代条件
}
class ForTest{
    public static void main(String[] args){
       //输出100以内的偶数
        for(int i = 1;i <=100;i++){
            if( i % 2 == 0){
                System.out.println(i);
            }
        }
        //获取两个数的最大公约数
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入第一个正整数");
        int m = scan.nextIN();
        
        System.out.println("请输入第二个正整数");
        int n = scan.nextIN();
        //获取两个数中的最大值
        int min = (m <= n)? m : n;
        //遍历
        for(int i = min;i >= 1;i--){
            if(m % 1 == 0 && n % i == 0){
                System.out.println(i);
                break;
            }
        }
        //获取两个数中的最大公倍数
        int max = (m >= n)? m : n;
        for(int i =max; i <= m * n;i++){
            if(i % m ==0 && i % n == 0){
                System.out.println(i);
                break;
            }
        }
    }
}
while循环结构
初始化条件
    while(循环条件){
        循环体;
        迭代条件;
    }
  • while循环注意不要丢了循环条件,避免死循环
  • for循环和while循环可以相互转换,但初始化条件的作用范围不同
class WhileTest{
    public void main(String[] args){
        //遍历100以内所有偶数
        int i = 1;
        while(i <= 100){
            if(i % 2== 0){
                System.out.println(i);
            }
            i++;
        }
    }
}
do-while循环结构
初始化条件
do{
    循环体;
    迭代条件;
}while(循环条件);
  • do-while至少会执行一次循环体
  • 开发中较少使用
class DoWhileTest{
    public void main(String[] args){
        //遍历100以内的偶数,并计算总和及其个数
        int num = 1;
        int sum = 0;
        int count = 0;
        do{
            if(num % 2 == 0){
                System.out.println(num);
                sum += num;
                count++;
            }
            num++;
        }while(num <= 100);
        System.out.println(sum);
        System.out.println(count);
    }
}

嵌套循环

  1. 将一个循环结构A声明在另一个循环结构B的循环体中
  • 外层循环:循环结构B
  • 内层循环:循环结构A
  1. 内层循环结构遍历一遍只相当于外层循环体执行了一次
  2. 外层循环控制行数,内层循环控制列数
/*
******
******
******
******
*/
class ForForTest{
    public static void main(String[] args){
    for(int j = 1;j<= 4;j++){
        for(int i = 1;i <= 6;i++){
        System.out.print('*');
        }
      System.out.println();
    }    
}
    
/*
九九乘法表
*/
class NineTNine{
    public static void main(String[] args){
        for(int i = 1;i <= 9;i++){
            for(int j = 1;j<=i;j++){
                System.out.print(i + "*" + j + "=" + (i * j) + "/t");
            }
            System.out.println();
        }
    }
}

特殊关键字的使用

关键字 适用范围 作用
break switch-case循环结构 结束当前循环
continue 循环结构 结束当循环
class BreakContinueTest{
   public static void main(String[] args){
       for(int i= 1;i<= 10;i++){
           if(i % 4 == 0){
               //break;//结束当前循环
               continue;//结束当此循环
           }
           System.out.println(i);
       }
   }
}

==lable标签==

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

推荐阅读更多精彩内容