0%

Dart学习笔记 (三)

String和Num的类型转换 , ++–自增自减 , for循环基础语法 , 二维List和Map和二维for循环 , 循环语句while和do…while , break语句和continue语句的功能

Number和String类型之间的转换

  • Number类型转换为String类型使用 toString()方法

    1
    2
    3
    var a=12;               //定义a=12 数值类型
    var str=a.toString(); //使用toString方法
    print(str is String); //用is判断str是不是String类型 输出: true
  • String类型转换为Number类型使用 parse()方法

    例1:

    1
    2
    3
    String str='123';           // '123'是一个字符串
    var a=double.parse(str); //parse的使用方式 double int 都可以使用
    print(a is double); //输出: true
    • 如果String转Namber时,因str=’ ‘空而报错,可食用try….catch 例如:

      1
      2
      3
      4
      5
      6
      7
      8
      String price=' ';                //可能是空格 空 其他非数字内容  price(价格)
      try{ //如果有数据就执行转换,错误数据就执行catch
      var a=double.parse(price);
      print(a);
      print(a is double);
      }catch(err){
      print(0); //输出: 0
      }
    • 也可以使用if..else和isEmpty(为空)或者NotisEmpty(不为空)方法 例如:

      1
      2
      3
      4
      5
      6
      7
      if(price.isEmpty){

      }
      -----------------------------------------
      if(price.NotisEmpty){

      }

自增自减

  • ++(自增) , –(自减)

  • 在赋值运算中,如果++–写在前面,这时会先运算,再赋值.如果++–写在后面则先赋值,后运算

    例1:

    1
    2
    3
    4
    var a=10;   
    var b=a++; //++写在后面所以是先赋值再运算
    print(a); //后运算 输出: 11
    print(b); //先赋值 输出: 10

    例2:

    1
    2
    3
    4
    var a=10;   
    var b=--a; //--写在前面所以是先运算再赋值
    print(a); //先运算 输出: 9
    print(b); //后赋值 输出: 9
  • 不是赋值运算的情况下++ , –写在前面后面效果一样

For循环的基本语法

1
2
3
for(int i=1;i<=100;i++){       //1.声明变量int i=1; 2.判断i<=100; 3.print(i); 4.i++; 5.从第二步继续开始循环,直到判断为false.
print(i);
} //输出: 123456~~~直到100; 因为100之后i++ 101 第二步判断为false 所以跳出循环
  • 例1:打印出0-50的偶数

    1
    2
    3
    4
    5
    for(var a=0;a<=50;a++){
    if(a%2==0){ //在for循环中嵌套if判断语句,判断条件为a取整2==0则输出a,否则 就是 不是偶数的 跳过
    print(a);
    } //所以没写else
    } //输出: 0 2 4 6....50;
  • 例2:求1+2+3….+100的和

    1
    2
    3
    4
    5
    var b=0;                    //从1开始加所以b=0
    for(int a=0;a<=100;a++){
    b+=a; //b=b+a
    }
    print(b); //输出: 5050
  • 例3:求5的阶乘

    1
    2
    3
    4
    5
    var b=1;                    //0x1=0所以b=1
    for(int a=1;a<=5;a++){
    b*=a; //b=b*a
    }
    print(b); //输出: 120
  • 例4:打印List数组

    1
    2
    3
    4
    List a=['张三','李四','王五'];         //定义数组a
    for(int b=0;b<a.length;b++){ //a.length是使用了length属性 是指list的长度 a数组长度为3但编号是从0开始所以是0 1 2,所以用b<a.length 因为没有编号3
    print(a[b]); //输出: 张三 李四 王五
    }
  • 例5:打印数组中的Map树形

    1
    2
    3
    4
    List a=[{'name':'熊大'},{'name':'熊二'},{'name':'熊三'}];      //定义数组a中有三个map
    for(var b=0;b<a.length;b++){ //for循环打印出数组中每个map中的name的value
    print(a[b]['name']); //输出: 熊大 熊二 熊三
    }
  • 二维List和Map和二维for循环

    例6:用二维for循环打印list中嵌套的map中的list

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    main() {
    List list = [
    {
    '目录': '游戏',
    '内容': [
    {'名称': 'Steam'},
    {'名称': 'Origin'},
    {'名称': 'Uplay'}
    ]
    },
    {
    '目录': '工作',
    '内容': [
    {'名称': 'Java'},
    {'名称': 'Dart'},
    {'名称': 'Python'}
    ]
    }
    ];
    for (int a = 0; a < list.length; a++) {
    print('----------------------------------------');
    print(list[a]['目录']);
    for (int b = 0; b < list[a]['内容'].length; b++) {
    print(list[a]['内容'][b]['名称']);
    }
    }
    }
    //输出:
    ----------------------------------------
    游戏
    Steam
    Origin
    Uplay
    ----------------------------------------
    工作
    Java
    Dart
    Python

循环语句while和do…while

  • while和do…while之间的区别: while在第一次循环条件不成立的情况下,什么都不会打印;do…while因为会先执行一次再判断,所以会打印第一次 例如:

    例1:

    1
    2
    3
    4
    int a=10;
    while(a<2){ //a大于2 所以不执行内容 输出应为'空'
    print('你好');
    } //输出: '空'
  • 例2:

    1
    2
    3
    4
    var a=10;
    do{
    print('你好'); //do..while的情况下会先执行此 打印出你好
    }while(a<2); //然后判断 a大于2 停止循环 但第一遍已经输出: 你好
  • 注意:1.do..while最后需要填分号 2.循环条件中使用的变量需要经过初始化 3.循环体中应有结束循环的条件,不然就成了死循环 例如:

    例1: while打印1~10

    1
    2
    3
    4
    5
    int a=1;
    while(a<=10){
    print(a);
    a++;
    } //输出: 1234...10

    例2:while求1~100的和

    1
    2
    3
    4
    5
    6
    7
    int a=1;
    int b=0;
    while(a<=100){
    b+=a;
    a++;
    }
    print(b); //输出: 5050

    例3:do…while求1~100的和

    1
    2
    3
    4
    5
    6
    7
    int a=1;
    int b=0;
    do{
    b+=a;
    a++;
    }while(a<=100);
    print(b); //输出: 5050

    例4:死循环 错误写法

    1
    2
    3
    4
    int a=1;
    while(a<=10){
    print(a);
    } //死循环,会不停输出111111因为没有满足结束条件

break语句和continue语句的功能

  • break语句功能:在switch中跳出switch结构

    • 在循环语句中使流程跳出当前循环,遇到break循环终止,后面的代码也不会执行

    • 如果循环中已经执行了break语句,就不会执行循环体中break之后的语句

    • 多层循环中,一个break语句只能向外跳出一层

    • break可以用在switch…case中,也可以用在for循环和while循环中

  • continue语句功能:跳过当前循环

    • 使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下一次循环

    • continue只能在循环语句中使用,可以在for循环以及while循环中使用,但不建议用在while循环中使用,容易造成死循环

    例1:如果a=4,跳过当前循环

    1
    2
    3
    4
    5
    6
    for(int a=1;a<=5;a++){
    if(a==4){ //如果a==4
    continue; //跳出当前循环
    }
    print(a); //输出: 1235
    }

    例2:如果a=4的话结束循环(跳出循环)

    1
    2
    3
    4
    5
    6
    for(var a=1;a<=5;a++){
    if(a==4){
    break; //结束
    }
    print(a); //输出: 123
    }

    例3:在多层循环中向外跳出一层

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    for(int a=1;a<=3;a++){
    print('外层'); //输出一个外层
    for(int b=1;b<=3;b++){
    if(b==2){
    break; //当b=2的时候就跳出当前循环 但是外部循环仍在继续
    }
    print('内层'); //因为内层到2就跳出,所以只有1会打印一次内层
    }
    }
    //输出:
    // 外层
    // 内层
    // 外层
    // 内层
    // 外层
    // 内层
-------------本文有底学海无涯-------------