第四讲

Java语言基础第四讲

一.循环语句概述

  • 循环语句的分类
    • for语句;
    • while语句;
    • do…while语句.
  • 一.循环结构 for语句的格式及其使用

        for语句格式:
    
        for(初始化表达式;条件表达式;循环后的操作表达式) {
    
            循环体;
    
        }
    
  • 执行流程:

    • 执行初始化语句;
    • 执行判断条件语句,看其返回值是true还是false,如果是true,就继续执行,如果是false,就结束循环;
    • 执行循环体语句;
    • 执行循环后的操作表达式;
    • 回到第二步继续.
  • 格式演示—输出十个helloworld.

    class For_1 {
        public static void main(String[] args) {
    
        for (int i = 1;i <= 10 ; i++ ) {
            System.out.println("Hello World!");
            }
        }
    }
    
  • 注意事项
    • 判断条件句无论简单还是复杂输出结果都应该是Boolean类型;
    • 循环体语句如果是一句语句,大括号可以省略,如果是多句,就不能省略,建议永远不要省略;
    • 一般情况下,有大括号就没有分号,有分号就没有大括号.
  • 练习一

    • 一:在控制台输出1–10;
    • 二:在控制台输出10–1.

      class For_2 {
          public static void main(String[] args) {
      
      //一:在控制台输出1--10;
          for (int x = 1;x <= 10 ;x++ ){
              System.out.println("x = " + x);
              }
              System.out.println("------------");
      
      //二:在控制台输出10--1.
          for (int x = 10;x >= 1 ;x-- ){
              System.out.println("x = " + x);
              }
          }
      }
      
  • 循环结构for语句练习之求和思想

    • 求出1–100之间的数据之和
    • 求出1–100之间的偶数数据之和
    • 求出1–100之间的奇数数据之和

      class Test_for1 {
          public static void main(String[] args) {
      
      //1--100之间的数据之和
          int sum = 0;
          for (int i = 1;i <= 100;i++ ) {
              sum = sum + i;
          }
              System.out.println("sum = " + sum);
      
      //求出1--100之间的偶数数据之和方法一
          int sum = 0;
          for (int i = 1;i <= 100 ;i++ ) {
              if (i % 2 == 0) {
                  sum = i + sum;
              }
          }
              System.out.println("sum = " + sum);
      
      
      //求出1--100之间的偶数数据之和方法二
      int sum = 0;
          for (int i = 0;i <= 100 ;i += 2 ) {
                  sum = i + sum;
              }
      
      
      //求出1--100之间的奇数数据之和方法一
          int sum = 0;
          for (int i = 1;i <= 100 ;i++ ) {
              if (i % 2 != 0) {
                  sum = i + sum;
              }
          }
              System.out.println("sum = " + sum);
      
      //求出1--100之间的奇数数据之和方法二
          int sum = 0;
              for (int i = 1;i <= 100 ;i += 2 ) {
              sum = i + sum;
              }
              System.out.println("sum = " + sum);
          }
      }
      
  • 循环结构for语句练习之水仙花

    • 在控制台输出所有的”水仙花数”
    • 水仙花—-指的是一个三位数, 其各位数字的立方和都等于其本身;
    • 例如:153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 *3 = 1 + 125 + 27 = 153

      //水仙花数
      class Test_for2 {
          public static void main(String[] args) {
              for (int i = 100;i <= 999 ;i++ ) {          //在100--999之间取数,将该数个位,十位,百位分别单提出来计算比较
                  int g = i % 10;                     //个位数.例123 % 10 取余3
                  int s = i / 10 % 10;            //十位数,12 %  10 取余2
                  int b = i / 10 / 10 % 10;       //百位数,1 % 10 左边绝对值小于右边,结果为左边
                  if (g * g * g + s * s * s + b * b * b == i) {
                      System.out.println(i);
                  } 
              }
          }
      }
      
  • 循环结构for语句练习之统计思想

    • 统计水仙花数在100–999之间共有几个?
    • 求出100-999中的第一个水仙花数以及在这个范围内水仙花数的个数

       //统计水仙花数在100--999之间共有几个?
      
      class Test_for3 {
          public static void main(String[] args) {
              int x = 0;                  //定义一个变量来统计记录水仙花数的个数
              for (int i = 100 ;i <= 999 ;i++ ) {
                  int g = i % 10;
                  int s = i / 10 % 10;
                  int b = i / 10 / 10 % 10;
                  if (i == g * g * g + s * s * s + b * b * b) {
                      x++;                //如果计算后的数是水仙花数,变量x自增
                  }
              }
                      System.out.println("x = " + x);
          }
      }
      
      //求出100-999中的第一个水仙花数以及在这个范围内水仙花数的个数
      class Demo_Flower {
          public static void main(String[] args) {
              int x = 0;                  //定义一个变量来统计记录水仙花数的个数
              for (int i = 100 ;i <= 999 ;i++ ) {
                  int g = i % 10;
                  int s = i / 10 % 10;
                  int b = i / 100 % 10;
                  if (i == g * g * g + s * s * s + b * b * b) {
                      x++;                //如果计算后的数是水仙花数,变量x自增
                  if (x == 1) {
                      System.out.println("第一个水仙花是" + i);
                      }
                  }
              }
                      System.out.println("x = " + x);
          }
      }
      
  • 二.循环结构 while 语句的格式及其使用
  • while语句循环的格式

    while语句循环的基本格式:
    
    while (条件判断语句){
    
    循环体语句;
    
    }
    
    while循环语句的完整格式:
    
    初始化语句;
    while (条件判断语句) {
    
    循环体语句;
    控制条件语句;
    
    }
    
  • 执行流程:
    • 先执行初始化语句;
    • 执行条件判断语句,看输出结果是true还是false,
      • 如果是true就执行循环语句体,
      • 如果是false就就结束循环;
    • 执行循环体语句;
    • 执行控制条件语句;
    • 回到第二步继续操作.
  • 练习操作—-请在控制台输出1–10.

    //练习操作----请在控制台输出1--10.
    
    class  Test1_While {
        public static void main(String[] args) {
            int i = 1;
            while (i <= 10) {   
            System.out.println("i = " + i);
                i++;
            }
        }
    }
    
    //对比输出结果,观察 i++ 位置不同,结果的不同.(回想顺序结构).
    class  Test1_While {
        public static void main(String[] args) {
            int i = 1;
            while (i <= 10) {   
                i++;
            System.out.println("i = " + i); 
            }
        }
    }
    
  • 循环结构 while 语句的练习

    • 一.求和思想:求出1–100的和;
    • 二.统计思想:在100–999之间统计水仙花数的个数.

      class Test2_While {
          public static void main(String[] args) {
      
      //求和思想:求出1--100的和;
              int sum = 0;
              int i = 1;
              while (i <= 100) {
                  sum = sum + i;
                  i++;
              }
                  System.out.println("sum = " + sum);
      
      
      //统计思想:在100--999之间统计水仙花数的个数.
      
              int count = 0;
              int j = 100;
              while (j <= 999) {
                  int g = j %10;
                  int s = j /10 % 10;
                  int b = j/ 10 / 10 % 10;
                  if (j == g * g * g + s * s * s + b * b * b) {
                      count++;            
                  }
                      j++;
              }
                  System.out.println("count = " + count);
          }
      }
      
  • 三.循环结构 do…while 语句的格式和使用
  • do…while 语句的基本循环格式:

    do {
    
        循环体语句;
    
    }while条件判断句;
    
    
    完整格式:
    初始化语句;
    do {
    
    循环体语句;
    控制条件语句;
    
    } while条件判断句;
    
  • 执行流程:
    • 先执行初始化语句;
    • 执行循环体语句;
    • 执行控制条件语句;
    • 执行while条件判断句,看结果是true还是false,
      • 如果是true,继续执行循环体语句,
      • 如果是false,结束循环语句;
    • 回到第二步继续操作.
  • 练习操作—-请在控制台输出1–10.

    //请在控制台输出1--10
    
    class Test_DoWhile1 {
        public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println("i = " + i);
            i++;    
        } 
        while (i <= 10);
        }
    }
    
  • 循环结构中三种循环语句的区别

    • do…while循环至少执行一次循环体;
    • 而for,while循环语句得要先确定条件判断句是否成立,然后才决定是否进行执行循环体语句.
    • 如果循环结束后,你还想用哪个控制条件的变量,就用while循环语句,反之就用for语句,因为for语句执行后变量会被释放掉,不能再进行使用.

      //三种循环结构语句的区别
          //请在控制台输出1--10
      
      class Test_DoWhile2 {
          public static void main(String[] args) {
      
      //for语句和while语句的区别:for语句定义了变量i之后,while语句还可以定义,反之不行,因为for语句结束后会释放变量;而while语句执行后,初始化变量还能继续使用,
      
          for (int i = 1;i <= 10 ; i++ ) {
              System.out.println("i = " + i);
          }
              System.out.println("-----------");
          int i = 1;
          while (i <= 10) {
              System.out.println("i = " + i);
              i++;
          }
              System.out.println("-----------");
      //while语句和do...while语句的区别:do...while至少要执行一次循环体语句.
          int i = 11;
          while (i <= 10) {
              System.out.println("i = " + i);
              i++;
          }
              System.out.println("-----------");
      
          int j = 11;
          do
          {
              System.out.println("j = " + j);
              j++;
          }
          while (j <= 10);
      
          }
      }
      
  • 循环结构注意事项之死循环
    • 一定要注意控制条件语句中哪个变量问题,不要弄丢了,否则就容易死循环.
    • while语句死循环: while (true) {…}
    • for语句死循环: for (;;) {…}
  • 循环语句之嵌套输出4行5列的星星
  • 操作练习—-请在控制台输出一个4行5列的星星的图案,如下图:

                *****
                *****
                *****
                *****
    
    class XingXing {
        public static void main(String[] args) {
            for (int i = 1;i <= 4;i++ ) {           //内循环决定列数
    
            for (int j = 1;j <= 5;j++ ) {           //外循环决定行数
    
                System.out.print("*");
                }
                System.out.println("*");
            }
        }
    }
    
  • 练习

    • 请输出图形,正三角形,和倒三角形.图形如下:

      *               *****
      **              ****
      ***             ***
      ****            **
      *****           *
      
      //正三角形
      class ForFor2 {
          public static void main(String[] args) {
              for (int i = 0;i <= 5;i++) {            //内循环决定行数
                  for (int j = 1;j <= i;j++) {        //外循环决定列数
                      System.out.print("*");
                  }
                      System.out.println();           //将光标换到下一行行首
                  }
                      System.out.println("-----------");
      //倒三角形
              for (int i = 5;i >= 1;i--) {            //内循环决定行数
                  for (int j = 1;j <= i;j++) {        //外循环决定列数
                      System.out.print("*");
                  }
                      System.out.println();           //将光标换到下一行行首
              }
          }
      }
      
  • 循环语句之嵌套输出九九乘法表

    /*循环语句之嵌套输出九九乘法表
    1 * 1 = 1
    1 * 2 = 2 2 * 2 = 4
    1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
    ...
    */
    
    class ForFor3 {
        public static void main(String[] args) {
    
            for (int i =1;i <= 9 ;i++ ) {
                for (int j = 1;j <= i;j++ ) {
                    System.out.print(j + "*" + i + "=" + (i * j) + "\t");
                }           
                System.out.println();
            }
        }
    }
            /*注意:
                    '\x',x表示任意,'\'表示转义符号,这种做法叫做转义字符.
                    '\t'表示teb键的位置;
                    '\r'表示回车;
                    '\n'表示换行;
                    '\"'表示输出双引号;
                    '\''表示输出单引号.
            */
    

二.控制跳转语句

  • break 语句—- 只能在switch语句和循环语句中使用,意思是跳出或终止循环.
  • continue 语句—- 只能在循环语句中使用,意思是终止本次循环,继续下次循环.
  • return 语句—-意思是返回,他的作用不是用来结束循环的,而是用来返回方法的.

    //break 语句---- 只能在switch语句和循环语句中使用,意思是跳出或终止循环.
    
    class Demo_break {
        public static void main(String[] args) {
            for (int i = 1;i <= 10 ;i++ ) {
                if (i == 4)
                {
                break;
                }
                System.out.println("i = " + i);
            }
        }
    }
    
     //continue 语句---- 只能在循环语句中使用,意思是终止本次循环,继续下次循环.
    
    class Demo_continue {
        public static void main(String[] args) {
            for (int i = 1;i <= 10 ;i++ ) {
                if (i == 4)
                {
                continue;
                }
                System.out.println("i = " + i);
            }
        }
    }
    
  • 控制跳转语句标号
    • 标号—-标记某个循环对其控制;
    • 标号组成规则—-其实就是合法的标识符.
  • break,continue以及return的区别:
    • break用来结束循环;
    • continue用来终止本次循环,继续下次循环;
    • return用来返回方法.
  • 获取100-999之间的第一个水仙花数

     //获取100-999之间的第一个水仙花数
    class Test_break {
        public static void main(String[] args) {
    
            for (int i = 100;i <= 999 ;i++ ) {
                int g = i % 10;
                int s = i /10 % 10 ;
                int b = i / 100 % 10;
                if (i == g * g * g + s * s * s + b * b * b) {
                    System.out.println("第一个水仙花数是" + i);
                    break;
                }
            }
        }
    }
    

三.方法的概述和说明

  • 方法—-指的是完成特定功能的代码块,从而来提高代码的复用性.
  • 方法的格式

    修饰符 返回值类型 方法名 (参数类型 参数名1,参数类型 参数名2) {
    
    方法体语句;
    
    return 返回值;
    
    }  
    
  • 方法的格式说明:

    • 修饰符: 目前就用 public static .
    • 返回值类型: 就是功能结果的数据类型(基本数据类型int,double,shoot,char,Boolean和引用数据类型) ;
    • 方法名: 就是合法的标识符,符合命名规则就行;
    • 参数: 分为实际参数和(实际参与运算的参数)形式参数(方法定义上的,用来接收实际参数的);
    • 参数类型: 就是实际的数据类型;
    • 参数名: 就是变量名;
    • 方法体语句: 就是完成功能的代码;
    • 返回值: 就是功能的结果,由return 带回给调用者.
  • 方法的求和案例及其调用

    /*
    求两个整数之和
    1.整数相加之后的结果还应该是整数
    2.有两个未知内容参与运算
    
    如何写一个方法
    1.明确返回值类型
    2.明确参数列表
    */
    
    class Dome_Method {             //method  方法,add 加法,做加法.
        public static void main(String[] args) {
            int sum = add(10,20);           //1.调用add方法,将10和20分别传递给a和b;
            System.out.println("sum = " + sum);
        }                                   //5.将方法的结果返回给sum.
        public static int add (int a,int b) {       //2.赋值a=10,b=20;
            int sum = a + b;            //3.执行语句将a和b相加然后赋给sum
            return sum;                     //4.通过return将sum的值返回.
        }
    }
    
  • 方法的注意事项

    • 方法不调用不执行;
    • 方法与方法之间是平级的,不能嵌套使用;
    • 方法定义的时候参数之间用逗号隔开;
    • 方法调用的时候不用在传递数据类型;
    • 如果方法有一个明确的返回值,就必须有一个return带回一个值.
  • 方法的练习

    • 键盘录入两个数据,返回两个数据中较大的数据;
    • 键盘录入两个数据,比较两个数是否相等.

      /* 键盘录入两个数据,返回两个数据中较大的数据;
      
         键盘录入两个数据,比较两个数是否相等.*/
      
      
      import java.util.Scanner;                           //导入包中的类
      class Method {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);        //录入键盘输入对象
              System.out.println("请输入一个整数");      //将键盘录入的数据存储在x中
                  int x = sc.nextInt();
              System.out.println("请输入一个整数");      //将键盘录入的数据存储在y中
                  int y = sc.nextInt();
      
                  int sum = max(x,y);
                  System.out.println("sum = " + sum);
      
                  boolean q = isEquals(x,y);
                  System.out.println(q);
          }
      
          //返回两个数据中较大的数据;
          //明确返回值类型 int;明确参数列表 int x,int y.
          public static int max(int x,int y) {
              return  x > y ? x : y; 
          }
      
          //比较两个数是否相等.    
          //明确返回值类型 Boolean;明确参数列表 int a,int b;
          public static boolean isEquals(int a,int b){        //isEquals 是否相等
              return a == b;
          }
      }
      
  • 方法的调用
    • 单独调用,一般来说没有意义,所以不推荐;
    • 输出调用,可以但是还不够好,因为可能针对一些输出结果进行进一步操作;]
    • 赋值调用,推荐使用.
  • 根据键盘录入的行数和列数,在控制台输出星形.

    //根据键盘录入的行数和列数,在控制台输出星形.
    
    import java.util.Scanner;           //导入包中的类
    class Demo_Method1 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个行数");      //将录入的数据存储在row中.row行数
            int row = sc.nextInt();
            System.out.println("请输入一个列数");      //将录入的数据存储在column中.column列数
            int column = sc.nextInt();
    
            //System.out.println(print(row,column));        //错误,此处不能用"空"类型,返回值是void的方法只能单独调用.
            print(row,column);
        }
    
        /*在控制台输出星形
            明确返回值类型,星形没有具体的返回值类型,故用void
            明确参数列表int a */
    
            public static void print(int a,int b){
                for (int i = 1;i <= a ;i++ ) {          //行数
                    for (int j = 1;j <= b ;j++ ) {      //列数
                        System.out.print("*");
                    }
                    System.out.println();
                }
                //return;           //如果返回值类型是void,return可以省略,即使省略系统也会默认加上,形式就是return.
            } 
    }
    
  • 练习—-键盘录入数据输出对应的九九乘法表

    //练习----键盘录入数据输出对应的九九乘法表
    
    import java.util.Scanner;
    class Demo_Method2 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个整数,范围在1--9之间");
            int x = sc.nextInt();
    
            print99(x);
        }
    
        /*输出对应的九九乘法表
            明确返回值类型 int
            明确参数列表 int a */
    
            public static void print99(int a) {
                for (int i = 1;i <= a ;i++ ) {
                    for (int j = 1;j <= i ;j++ ) {
                        System.out.print(j + "*" + i + "=" + (i * j) + "\t");
                    }
                    System.out.println();
                }
            }
    }
    

四,方法重载的概述和基本使用

  • 方法重载—-在同一个类中,方法名相同,参数列表不同,与返回值类型无关.
    • 参数列表不同:
      • a.参数个数不同;
      • b.参数类型不同;
      • c.参数顺序不同(在开发中不用).
  • 求和案例

    • 2个整数
    • 3个整数
    • 2个小数

      class Test_Overload {           //Overload 重载
          public static void main(String[] args) {
              int sum = add(10,20);
              System.out.println(sum);
      
              int sum1 = add(10,20,30);
              System.out.println(sum1);
      
              double sum2 = add(12.3,13.4);
              System.out.println(sum2);
          }
      
      
          /*求两个整数之和
          1.返回值类型 int
          2.参数列表int a,int b.
          */
          public static int add(int a,int b) {
              return a + b;
          }
      
      
          /*求三个整数之和
          1.返回值类型 int
          2.参数列表int a,int b,int c.
          */
      
          public static int add(int a,int b,int c) {
              return a + b + c;
          }
      
          /*求两个小数之和
          1.返回值类型 double
          2.参数列表double a,double b.*/
      
      
          public static double add(double a,double b) {
              return a + b ;
          }
      }
      
  • 方法重载练习: 比较数据是否相等

    • 参数类型分别为2个double 类型,2个int 类型,并在main方法中测试.

       /* 方法重载练习: 比较数据是否相等
         参数类型分别为2个long类型,2个int 类型,并在main方法中测试.*/
      
      
      class Overload2 {
          public static void main(String[] args) {
              boolean b = isEquals(10,10);
              System.out.println(b);
      
              boolean b1 = isEquals(12.3,10.5);
              System.out.println(b1);
          }
      
          /*2个int 类型数据比较是否相等
              返回值类型boolean
              参数列表 int a,int b*/
      
          public static boolean isEquals(int a,int b){
              return a == b;  
          }
      
          /*2个int 类型数据比较是否相等
              返回值类型boolean
              参数列表 double a,double b*/
      
          public static boolean isEquals(double a,double b){
              return a == b;  
          }
      } 
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值