Java基础 - 流程控制

流程控制

一、用户交互Scanner

  • Scanner s = Scanner(System.in)

  • next()、nextLine() 方法获取输入的字符串

  • hasNext()、hasNextLine() 判断是否还有输入的数据

    • hasNext()返回的是boolean类型,而next()返回的是你输入的那个值

    • scanner1.hasNext()可以理解为把我们输入的值存到了scanner1当中,而scanner1.next()可以理解为从scanner1中取值,取值后将标识符后移

    Scanner scanner1 = new Scanner(System.in);            //创建一个扫描器对象,用于接收键盘数据
    System.out.println("使用next方法接收:");          //Hello world
    String a1 = scanner1.next(); //next接收一个字符
    System.out.println("输出结果为"+a1);             //Hello

    Scanner scanner2 = new Scanner(System.in);
    System.out.println("使用nextLine方法接收:");
    String a2 = scanner2.nextLine(); //nextLine接收字符串
    System.out.println("输出结果为" + a2);               //Hello world

    Scanner scanner3 = new Scanner(System.in);
    System.out.println("使用hasNextFloat方法接收:");
    if (scanner3.hasNextFloat()) {
       Float a3 = scanner3.nextFloat(); //nextFloat接收小数
       System.out.println("输出结果为" + a3);
    }

    scanner1.close(); //凡事属于IO流的类,如果不关会一直占用资源
    //注意最后再关闭,否则会报错“Exception in thread "main" java.util.NoSuchElementException: No line found”
    //原因:scanner1.close()过后System.in流就永远关闭,Scanner scanner2 = new Scanner(System.in)并不会重新打开输入流

二、顺序结构

  • 基本结构【除非特殊指明,从上到下依次按顺序进行】

三、选择结构

  • if 语句

    if (布尔表达式 1){
    //语句1
    }else if (布尔表达式 2){
    //语句2
    }else if (布尔表达式 3){
    //语句3
    }else{
      // 当以上布尔表达式都不满足时,执行的语句
    }
  • switch多选择结构

    • 用于判断一个变量与一系列值中某个值是否想等,每一个值称为一个分支

    • 从 java SE7 开始,switch支持字符串 String 类型,同时case标签必须是字符串常量或字面量

    switch (expression){
    case value1: //case 穿透 //expression==value1,则会执行下方语句
    //语句
    break; //如果不加break,匹配成功,执行完当前语句,还会往下接着执行
    case value2:
    //语句
    break;
    default: //相当于else
    //语句
    }

四、循环结构

  • while 循环【先判断后执行】

while (布尔表达式){
//循环内容
}
  • do ··· while 循环【先执行后判断,代码至少执行一次】

do {
//循环内容
}while (布尔表达式);
  • for 循环

for (初始化;布尔表达式;更新){
//循环内容
}
  • 增强for循环

for(声明语句:表达式)
{
//代码句子
}
  1. 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等

  2. 表达式:表达式是要访问的数组名,或是返回值为数组的方法

int[] numbers = {1, 2, 3, 4, 5};          //创建一个数组
for (int x:numbers){                //将numers每一项赋值给x,进行遍历
   System.out.println(x);
}
  • ----------- 举例 -------------

    • 计算0-100之间的奇数和偶数的和

    //while循环
    int i = 0;
    int num_1 = 0;
    int num_2 = 0;
    while (i<=100){
       if (i%2==0) {
           num_1 += i;
      }else {
           num_2 += i;
      }
       i++;
    }
    System.out.println("偶数和为:"+num_1);
    System.out.println("奇数和为:"+num_2);
    System.out.println("sum:"+(num_1+num_2));

    //for循环
    int num_3 = 0;
    int num_4 = 0;
    for (int i1 = 0; i1 <= 100; i1++) {
       if (i1%2==0) {
           num_3 += i1;
      }else {
           num_4 += i1;
      }
       i += 1;
    }
    System.out.println("偶数和为:"+num_3);
    System.out.println("奇数和为:"+num_4);
    System.out.println("sum:"+(num_3+num_4));
    • 输出1-100能被5整除的数,每行3个

    //while循环
    int i2 = 1;
    while (i2<=100){
       if (i2%5==0){
           System.out.print(i2+"\t"); //print输出完不换行
      }
       if (i2%(5*3)==0){
           System.out.println(); //println输出完换行
      }
       i2++;
    }

    //for循环
    for (int i_2 = 0; i_2 <= 100; i_2++) {
       if (i_2%5==0){
           System.out.print(i_2+"\t");
      }
       if (i_2%(5*3)==0){
           System.out.println();
      }
    }
    • 打印九九乘法表

    for (int i4 = 1; i4 < 10; i4++) {
       for (int i5 = 1; i5 <= i4; i5++) {
           System.out.print(i5+"*"+i4+"="+i4*i5+"\t");
      }
       System.out.println();
    }
    • 打印三角形

    for (int t1 = 1; t1 <= 5; t1++) {
       for (int t2 = 5; t2 > t1; t2--) {
           System.out.print(" ");
      }
       for (int t3 = 1; t3 <= t1; t3++) {
           System.out.print("*");
      }
       for (int t4 = 1; t4 < t1; t4++) {
           System.out.print("*");
      }
       System.out.println();
    }

五、break & continue

  1. break:终止循环

  2. continue:跳出当次循环

  • goto关键字

    • goto即带标签的break和continue

    • 标签:指后面跟一个冒号的标识符【label:】

    • 标签用在循环语句之前,在嵌套循环中,由于break和continue只中断当前循环,加入标签后,可中断到标签所处位置

posted @ 2021-02-04 11:23  葬花骨  阅读(70)  评论(0)    收藏  举报