从头开始学Java—Java流程控制

Java流程控制

说明:1.我建了一个包,叫control,来存放这一章节的源码。2.Java学习观看了B站的UP主“遇见狂神说”的视频和网站菜鸟教程。3.插加入的图片通常是代码跑出来的结果。点击下载JavaSE-v2.0源码

一、用户交互Scanner

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入

下面是创建 Scanner 对象的基本语法:

Scanner s = new Scanner(System.in);

通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据

  • next() 与 nextLine() 区别

    1. next():
    • 一定要读取到有效字符后才可以结束输入
    • 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  • next() 不能得到带有空格的字符串
  1. nextLine():

    • 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符

    • 可以获得空白

public class ScannerDemo {
    public static void main(String[] args) {
        // 创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据:");

        // 判断用户有没有输入字符串
         if (scanner.hasNext()){
            // 使用next接收用户的输入
            String str = scanner.next();
            System.out.println("使用next输出的内容为:" + str);
        }
        /*可以输入空格
        if (scanner.hasNextLine()){
            String s = scanner.nextLine();
            System.out.println("使用nextLine输入的内容为:"+s);
        }
		*/
        // 凡是使用IO流的类,如果不关闭就会一直使用资源
        scanner.close();
    }
}

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

public class ScannerDemo {
    public static void main(String[] args) { 		
		int i ;
        float f ;
        System.out.print("请输入整数:");
        if (scanner.hasNextInt()) {
            // 判断输入的是否是整数
            i = scanner.nextInt();
            // 接收整数
            System.out.println("整数数据:" + i);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是整数!");
        }
        System.out.print("请输入小数:");
        if (scanner.hasNextFloat()) {
            // 判断输入的是否是小数
            f = scanner.nextFloat();
            // 接收小数
            System.out.println("小数数据:" + f);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是小数!");
        }
    }
}

public class ScannerPractice {
    // 输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
    public static void main(String[] args) {
        System.out.println("请输入数字:");
        Scanner scanner = new Scanner(System.in);

        double sum = 0.0;  // 和
        int i = 0;       // 输入数字的个数

        while (scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            i++;
        }
        System.out.println(i + "个数的和为" + sum);
        System.out.println(i + "个数的平均值是" + (sum / i));

        scanner.close();
    }
}

二、 顺序结构

百度百科对顺序结构的定义是:顺序结构的程序设计是最简单的,只要按照解决问题的出现的先后顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行

三、选择结构

if 条件语句

  • if单选择结构 if...

    我们很多时候需要判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示

    if(布尔表达式) {   //如果布尔表达式为true将执行的语句 }
    
    实例: 
    import java.util.Scanner;
    public class StructDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入内容:");
            String str = scanner.nextLine();
    
            // if 单选择
            if (str.equals("hello")) // equals 判断是否相等;与 == 不同
            {
                System.out.println(str);
            }
            
            System.out.println("End");
            scanner.close();
        }
    }
    

  • if双选择 ,if...else...

      if(布尔表达式) { //如果布尔表达式为true将执行的语句 }
      else{ // 当 if 语句的布尔表达式值为 false 时,else 语句块会被执行}
    
    实例:
    import java.util.Scanner;
    public class StructDemo {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              /*
              // if 单选择
              System.out.println("请输入内容:");
              String str = scanner.nextLine();
      
              if (str.equals("hello")) // equals 判断是否相等;与 == 不同
              {
                  System.out.println(str);
              }
              */
      
              // if...else... 双选择
              // 考试分数大于(含)60分是及格,小于60分是不及格,输入一个分值,判断它是否及格
              System.out.println("请输入分值:");
              int score =scanner.nextInt();
              if (score > 60 || score == 60){
                  System.out.println("成绩及格");
              }else{
                  System.out.println("成绩不及格");
              }
      
              System.out.println("End");
              scanner.close();
          }
      }
    

  • if多选择

    if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况

    使用 if,else if,else 语句的时候,需要注意下面几点:

    1. if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后
    2. if 语句可以有若干个 else if 语句,它们必须在 else 语句之前
    3. 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
} 

实例:
import java.util.Scanner;
public class StructDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // if...else if...else 多选择
        // 考试分数大于(含)90分是优秀,大于(含)75分是良好,大于(含)60分是及格,小于			60分是不及格,输入一个分值,判断它是哪个等级
        System.out.println("请输入分值:");
        int score =scanner.nextInt();
        if (score <= 100 && score >= 90){
            System.out.println("成绩优秀");
        }
        else if ( score < 90 &&  score >= 75) {
            System.out.println("成绩良好");
        }
        else if ( score < 75 &&  score >= 60) {
            System.out.println("成绩及格");
        }
        else if ( score < 60 &&  score >= 0) {
            System.out.println("成绩不及格");
        }
        else {
            System.out.println("成绩不合法");
        }
        System.out.println("End");
        scanner.close();
    }
}

  • if 嵌套结构 你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。所谓套娃不过如此
if(布尔表达式 1){
   ////如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      ////如果布尔表达式 2的值为true执行代码
   }
}

switch case 语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch case 语句有如下规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。如果中间缺少break语句,则会出现case穿透现象
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句

switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

实例:
public class StructSwitchDemo {
    public static void main(String[] args) {
        char grade = 'B';

        switch(grade)
        {
            case 'A' :
                System.out.println("优秀");
                break;
            case 'B' :
                System.out.println("良好");
                break;
            case 'C' :
                System.out.println("及格");
                break;
            case 'D' :
                System.out.println("你需要再努力努力");
                break;
            default :
                System.out.println("未知等级");
        }
        System.out.println("你的等级是 " + grade);
    }
}

四、循环结构

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。

Java中有三种主要的循环结构:

  • while 循环
  • do…while 循环
  • for 循环

在Java5中引入了一种主要用于数组的增强型for循环

while 循环结构

while是最基本的循环,它的结构为:

while( 布尔表达式 ) {  //循环内容 }
  • 只要布尔表达式为 true,循环就会一直执行下去

  • 我们大多数情况下是会让循环停止下来的,这就需要一个表达式失效的方式来结束循环

  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等

  • 循环条件一直为true就会造成死循环,我们正常的业务编程中应该避免死循环,它会影响程序性能或者造成程序卡死崩溃

do while 循环结构

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

do {
       //代码语句
}while(布尔表达式);

  • while 和 do...while 的区别
    • while 先判断后执行,do...while 是先执行后判断
    • do...while 能保证循环体至少被执行一次。这是它们的主要区别

for 循环结构

虽然所有循环结构都可以用 while 或者 do...while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。

for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化; 布尔表达式; 更新) {    //代码语句 }

关于 for 循环有以下几点说明:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

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

public class StructForDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++){
            System.out.println(i);
        }
        System.out.println("for循环结束!");
        System.out.println("-------------------------------------------");
        // 打印一个数组
        int[] numbers = {10,20,30,40,50};
        for (int l = 0; l <= numbers.length-1; l++)
        {
            System.out.println(numbers[l]);
        }
        System.out.println("-------------------------------------------");
        for (int x:numbers){
            System.out.println(x);
        }
    }
}

五、break&continue

break 主要用在循环语句或者 switch 语句中,用来强制跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

六、练习

public class MyPractice {
    // 打印一个5行三角形
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int j = 5; j >= i ;j--){
                //System.out.print("*");
                System.out.print(" ");
            }
            for (int j = 1; j <= i ;j++){
                System.out.print("*");
            }
            for (int j = 1; j < i ;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

------------恢复内容开始------------

Java流程控制

说明:1.我建了一个包,叫control,来存放这一章节的源码。2.Java学习观看了B站的UP主“遇见狂神说”的视频和网站菜鸟教程。3.插加入的图片通常是代码跑出来的结果。

一、用户交互Scanner

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入

下面是创建 Scanner 对象的基本语法:

Scanner s = new Scanner(System.in);

通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据

  • next() 与 nextLine() 区别

    1. next():
    • 一定要读取到有效字符后才可以结束输入
    • 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  • next() 不能得到带有空格的字符串
  1. nextLine():

    • 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符

    • 可以获得空白

public class ScannerDemo {
    public static void main(String[] args) {
        // 创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据:");

        // 判断用户有没有输入字符串
         if (scanner.hasNext()){
            // 使用next接收用户的输入
            String str = scanner.next();
            System.out.println("使用next输出的内容为:" + str);
        }
        /*可以输入空格
        if (scanner.hasNextLine()){
            String s = scanner.nextLine();
            System.out.println("使用nextLine输入的内容为:"+s);
        }
		*/
        // 凡是使用IO流的类,如果不关闭就会一直使用资源
        scanner.close();
    }
}

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

public class ScannerDemo {
    public static void main(String[] args) { 		
		int i ;
        float f ;
        System.out.print("请输入整数:");
        if (scanner.hasNextInt()) {
            // 判断输入的是否是整数
            i = scanner.nextInt();
            // 接收整数
            System.out.println("整数数据:" + i);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是整数!");
        }
        System.out.print("请输入小数:");
        if (scanner.hasNextFloat()) {
            // 判断输入的是否是小数
            f = scanner.nextFloat();
            // 接收小数
            System.out.println("小数数据:" + f);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是小数!");
        }
    }
}

public class ScannerPractice {
    // 输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
    public static void main(String[] args) {
        System.out.println("请输入数字:");
        Scanner scanner = new Scanner(System.in);

        double sum = 0.0;  // 和
        int i = 0;       // 输入数字的个数

        while (scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            i++;
        }
        System.out.println(i + "个数的和为" + sum);
        System.out.println(i + "个数的平均值是" + (sum / i));

        scanner.close();
    }
}

二、 顺序结构

百度百科对顺序结构的定义是:顺序结构的程序设计是最简单的,只要按照解决问题的出现的先后顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行

三、选择结构

if 条件语句

  • if单选择结构 if...

    我们很多时候需要判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示

    if(布尔表达式) {   //如果布尔表达式为true将执行的语句 }
    
    实例: 
    import java.util.Scanner;
    public class StructDemo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入内容:");
            String str = scanner.nextLine();
    
            // if 单选择
            if (str.equals("hello")) // equals 判断是否相等;与 == 不同
            {
                System.out.println(str);
            }
            
            System.out.println("End");
            scanner.close();
        }
    }
    

  • if双选择 ,if...else...

      if(布尔表达式) { //如果布尔表达式为true将执行的语句 }
      else{ // 当 if 语句的布尔表达式值为 false 时,else 语句块会被执行}
    
    实例:
    import java.util.Scanner;
    public class StructDemo {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              /*
              // if 单选择
              System.out.println("请输入内容:");
              String str = scanner.nextLine();
      
              if (str.equals("hello")) // equals 判断是否相等;与 == 不同
              {
                  System.out.println(str);
              }
              */
      
              // if...else... 双选择
              // 考试分数大于(含)60分是及格,小于60分是不及格,输入一个分值,判断它是否及格
              System.out.println("请输入分值:");
              int score =scanner.nextInt();
              if (score > 60 || score == 60){
                  System.out.println("成绩及格");
              }else{
                  System.out.println("成绩不及格");
              }
      
              System.out.println("End");
              scanner.close();
          }
      }
    

  • if多选择

    if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况

    使用 if,else if,else 语句的时候,需要注意下面几点:

    1. if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后
    2. if 语句可以有若干个 else if 语句,它们必须在 else 语句之前
    3. 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
} 

实例:
import java.util.Scanner;
public class StructDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // if...else if...else 多选择
        // 考试分数大于(含)90分是优秀,大于(含)75分是良好,大于(含)60分是及格,小于			60分是不及格,输入一个分值,判断它是哪个等级
        System.out.println("请输入分值:");
        int score =scanner.nextInt();
        if (score <= 100 && score >= 90){
            System.out.println("成绩优秀");
        }
        else if ( score < 90 &&  score >= 75) {
            System.out.println("成绩良好");
        }
        else if ( score < 75 &&  score >= 60) {
            System.out.println("成绩及格");
        }
        else if ( score < 60 &&  score >= 0) {
            System.out.println("成绩不及格");
        }
        else {
            System.out.println("成绩不合法");
        }
        System.out.println("End");
        scanner.close();
    }
}

  • if 嵌套结构 你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。所谓套娃不过如此
if(布尔表达式 1){
   ////如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      ////如果布尔表达式 2的值为true执行代码
   }
}

switch case 语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch case 语句有如下规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。如果中间缺少break语句,则会出现case穿透现象
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句

switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

实例:
public class StructSwitchDemo {
    public static void main(String[] args) {
        char grade = 'B';

        switch(grade)
        {
            case 'A' :
                System.out.println("优秀");
                break;
            case 'B' :
                System.out.println("良好");
                break;
            case 'C' :
                System.out.println("及格");
                break;
            case 'D' :
                System.out.println("你需要再努力努力");
                break;
            default :
                System.out.println("未知等级");
        }
        System.out.println("你的等级是 " + grade);
    }
}

四、循环结构

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。

Java中有三种主要的循环结构:

  • while 循环
  • do…while 循环
  • for 循环

在Java5中引入了一种主要用于数组的增强型for循环

while 循环结构

while是最基本的循环,它的结构为:

while( 布尔表达式 ) {  //循环内容 }
  • 只要布尔表达式为 true,循环就会一直执行下去

  • 我们大多数情况下是会让循环停止下来的,这就需要一个表达式失效的方式来结束循环

  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等

  • 循环条件一直为true就会造成死循环,我们正常的业务编程中应该避免死循环,它会影响程序性能或者造成程序卡死崩溃

do while 循环结构

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

do {
       //代码语句
}while(布尔表达式);

  • while 和 do...while 的区别
    • while 先判断后执行,do...while 是先执行后判断
    • do...while 能保证循环体至少被执行一次。这是它们的主要区别

for 循环结构

虽然所有循环结构都可以用 while 或者 do...while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。

for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化; 布尔表达式; 更新) {    //代码语句 }

关于 for 循环有以下几点说明:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

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

public class StructForDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++){
            System.out.println(i);
        }
        System.out.println("for循环结束!");
        System.out.println("-------------------------------------------");
        // 打印一个数组
        int[] numbers = {10,20,30,40,50};
        for (int l = 0; l <= numbers.length-1; l++)
        {
            System.out.println(numbers[l]);
        }
        System.out.println("-------------------------------------------");
        for (int x:numbers){
            System.out.println(x);
        }
    }
}

五、break&continue

break 主要用在循环语句或者 switch 语句中,用来强制跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

六、练习

public class MyPractice {
    // 打印一个5行三角形
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int j = 5; j >= i ;j--){
                //System.out.print("*");
                System.out.print(" ");
            }
            for (int j = 1; j <= i ;j++){
                System.out.print("*");
            }
            for (int j = 1; j < i ;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

------------恢复内容结束------------

posted on 2021-03-30 22:50  Cap-Jerry  阅读(65)  评论(0)    收藏  举报