Javase基础4:顺序结构、分支结构和选择结构、循环结构、跳转结构

目录

1. 笔记

1.1 顺序结构

1.2 分支结构和选择结构

1.3 循环结构

1.4 跳转结构

2. 练习

第1题:成绩及格

第2题:三个数排序

第3题:押豹子

第4题:月份季节

第5题:这一天是当年的第几天

第6题:累加和

第7题:猜数

第8题:水仙花数

第9题:完数

第10题:九九乘法表

第11题:打印菱形


1. 笔记

1.1 顺序结构

1. 顺序结构
   程序是按照顺序执行的(从上往下)
   ① 输出
      输出语句,从上往下依次执行
   ② 输入(在实际工作中没有用处)
      用途:为了一些练习使用
      功能:在命令窗口输入一些数据,被程序获取!
      知识点范围:属于面向对象
      关注点:实现步骤
      步骤:
         a. 准备一个输入的工具
            java.util.Scanner input=new java.util.Scanner(System.in);
         b. 准备输入入口
            nextInt()  整型数据输入的入口
            nextDouble()   浮点型数据的输入入口
            next()      字符串数据的输入入口
               只能取空格前面的内容
            nextLine()   字符串数据的输入入口
               读取一行,空格也算
            建议使用next(),输入的数据不要有空格

      注意事项:
         java.util.InputMismatchException   输入的数据和类型不匹配

1.2 分支结构和选择结构

1. 分支结构和选择结构  ★
   分支结构:
      ① 单分支
         举例:手动输入小明的java成绩,如果成绩高于90,奖励假发一顶
         语法:if(条件){代码块}
         原理:如果条件成立,则执行代码块,如果条件不成立则不执行代码块
         特性:
            a. 当if后大括号中只有一行代码的时候,大括号可以省略的
               这行代码不能是变量的声明(做完练习后在解释)
            b. if是可以嵌套的,if的大括号就可以写main方法大括号中的任意代码
         补充:
            变量的作用域:是在当前大括号
      ② 双分支
         举例:手动输入小明的java成绩,如果成绩高于90,奖励假发一顶
            否则在敲2万行代码
         语法:if(条件){代码块1}else{代码块2}
         原理:条件成立执行代码块1,条件不成立执行代码块2
         特性:
            a. if和else后的大括号中只有一行代码的时候,大括号可以省略的
               这行代码不能是变量的声明(做完练习后在解释)
            b. 大括号是可以嵌套的
      ③ 多分支
         举例:手动输入小明的java成绩,如果成绩满分,奖励植发一次
            如果成绩高于90,奖励假发一顶,
            如果成绩高于80,奖励洗头膏一袋,
            如果成绩大于60,奖励洗面奶一瓶,
            否则在敲2万行代码
         语法:if(条件1){代码块1}
               else if(条件2){代码块2}
               else if(条件3){代码块3}
               ...
               【else{代码块n}】
         原理:判断条件1是否成立,如果成立,执行代码块1,多分支结束
               如果条件1不成立,就会判断条件2,如果成立的,执行代码块2,多分支结束
               如果条件2不成立,就会判断条件3,如果成立的,执行代码块3,多分支结束
               ...
               如果所有的条件都不成立,则执行代码块n(存在else的情况下)
   
   选择结构
      语法:switch(变量名){
            case 值1:
               代码块1;
            【break;】
            case 值2:
               代码块2;
            【break;】
            case 值3:
               代码块3;
            【break;】
            ...
            【default:
               代码块n;
            break;】
            }
      原理:判断变量的值和值1是否相等   ,如果相等,则执行代码块1,
            执行完之后,开始寻找break(才是结束switch的标识)
            如果不相等,则判断变量和值2是否相等,如果相等,则执行代码块2,
            执行完之后,开始寻找break(才是结束switch的标识)
           如果不相等,则判断变量和值3是否相等,如果相等,则执行代码块3,
            执行完之后,开始寻找break(才是结束switch的标识)
           变量如果和所有值都不一样,则执行default中的代码块n
      注意:
         a. case后的值不能相同
         b. case的穿透
         c. switch结束,要么执行完毕,要么遇到break
         d. switch都支持什么数据类型
            byte short int char String(JDK1.7新增) 枚举(后面会讲到)

1.3 循环结构

1. 循环结构
   为什么要有循环结构呢?
      打印534次,好好学习天天向上!争取得到富婆练习方式!
   作用:提高复用性,提高扩展性和维护性!
   1.1 while
      语法:while(循环条件){代码块}
      原理:循环条件成立,则执行代码块,执行完代码块,会再次回到循环条件判断的位置
           如果依然成立,则再次执行代码块,直到循环条件不成立为止(循环结构结束)
      控制循环次数:
         ① 循环因子
         ② 循环条件
         ③ 循环因子值的改变
      案例:
         int i=0;//程序员的习惯,0认为是第一个数据
         while(i<5){
            System.out.println("好好学习天天向上!争取得到植发奖励!"+i);
            i++;
         }
      建议常用手段:i++就放在循环的最末尾!
     
   1.2 for
      语法:for(循环因子的声明;循环条件;循环因子值的改变){代码块}
      优势:将while循环的控制循环次数的三个要素,总结到一个地方去了(小括号内)

      确定循环次数的情况下,使用for循环
      不确定循环次数的情况下,使用while循环

   1.3 do-while
      语法:do{代码块}while(循环条件);
      原理:执行代码块,然后判断循环条件,如果条件成立,则继续执行代码块
            如果条件不成立,则循环结束
      特点:do-while至少执行一次
      使用场景:不确定循环次数的情况(登录注册)
      
   1.4 其他循环
      foreach  增强for循环(后期学)
      递归  循环的一种(讲完方法学)

1.4 跳转结构

1. 跳转结构
   1.1 break
      ① switch内
         用于结束当前switch
      ② 用在循环内(while,for,do-while,foreach)
         用于结束当前循环
   1.2 continue
      ① 用在循环内(while,for,do-while,foreach)
         用于结束本次循环,直接进入下一次循环

2. 练习

第1题:成绩及格

需求:从键盘输入一个分数,如果60分(含)以上,就打印合格,如果60分以下,就打印不合格

public class TestExer01{
	public static void main(String[] args){
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		System.out.print("请输入成绩:");
		int score = input.nextInt();
		
        if(score >= 60){
            System.out.println("合格");
        }else{
            System.out.println("不合格");
        }
	}
}
public class TestExer01{
	public static void main(String[] args){
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		System.out.print("请输入成绩:");
		int score = input.nextInt();
		
		System.out.println(score >= 60 ? "合格" : "不合格");
	}
}

第2题:三个数排序

需求:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。

public class TestExer3{
	public static void main(String[] args){
		//1、键盘输入三个整数
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		System.out.print("请输入num1:");
		int num1 = input.nextInt();
		
		System.out.print("请输入num2:");
		int num2 = input.nextInt();
		
		System.out.print("请输入num3:");
		int num3 = input.nextInt();
		
		//2、判断
		/*
		三个数排序,6种情况
		num1 <= num2 <= num3
		num1 <= num3 <= num2
		
		num2 <= num1 <= num3
		num2 <= num3 <= num1
		
		num3 <= num2 <= num1
		num3 <= num1 <= num2
		*/
		if(num1<=num2 && num2<=num3){
			System.out.println(num1 + "<=" +  num2 + "<=" +  num3);
		}else if(num1<=num3 && num3<=num2){
			System.out.println(num1 + "<=" +  num3 + "<=" +  num2);
		}else if(num2<=num1 && num1<=num3){
			System.out.println(num2 + "<=" +  num1 + "<=" +  num3);
		}else if(num2<=num3 && num3<=num1){
			System.out.println(num2 + "<=" +  num3 + "<=" +  num1);
		}else if(num3<=num2 && num2<=num1){
			System.out.println(num3 + "<=" +  num2 + "<=" +  num1);
		}else{
			System.out.println(num3 + "<=" +  num1 + "<=" +  num2);
		}
		
	}
}
public class TestExer3{
	public static void main(String[] args){
		//1、键盘输入三个整数
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		System.out.print("请输入num1:");
		int num1 = input.nextInt();
		
		System.out.print("请输入num2:");
		int num2 = input.nextInt();
		
		System.out.print("请输入num3:");
		int num3 = input.nextInt();
        
        //嵌套
		if(num1 <= num2){
			if(num2 <= num3){ //num1 <= num2 && num2 <= num3
				System.out.println(num1 + "<=" + num2 + "<=" + num3);
			}else{
				if(num1 <= num3){ //num1<=num2 && num3<num2 && num1<=num3
					System.out.println(num1 + "<=" + num3 + "<=" + num2);
				}else{
					//num1<=num2 && num3<num2 && num3<num1
					System.out.println(num3 + "<=" + num1 + "<=" + num2);
				}
			}
		}else{
			if(num3 >= num1){//num1 > num2 && num3 >= num1  //num3 >= num1 > num2
				System.out.println(num2 + "<=" + num1 + "<=" + num3);
			}else{
				if(num2 <= num3){//num1 > num2  && num1 > num3 && num2 <= num3
					System.out.println(num2 + "<=" + num3 + "<=" + num1);
				}else{
					//num1 > num2  && num1 > num3 && num3<num2
					System.out.println(num3 + "<=" + num2 + "<=" + num1);
				}
			}
		}
	}
}

第3题:押豹子

需求:赌数游戏:随机产生3个1-6的整数,如果三个数相等,那么称为“豹子”,如果三个数之和大于9,称为“大”,如果三个数之和小于等于9,称为“小”,用户从键盘输入押的是“豹子”、“大”、“小”,并判断是否猜对了

提示:随机数 Math.random()产生 [0,1)范围内的小数

public class TestExer7{
	public static void main(String[] args){
		//1、随机产生3个1-6的整数
		int a = (int)(Math.random()*6 + 1);
		int b = (int)(Math.random()*6 + 1);
		int c = (int)(Math.random()*6 + 1);
		
		//2、判断随机产生的数的结果是什么
		String result;
		if(a == b && b == c){
			result = "豹子";
		}else if(a + b + c > 9){
			result = "大";
		}else{
			result = "小";
		}
		
		//3、用户从键盘输入押的是“豹子”、“大”、“小”
		java.util.Scanner input = new java.util.Scanner(System.in);
		System.out.print("请押宝(豹子、大、小):");
		String ya = input.next();
		
		//4、判断用户的输入是否猜对了
		//比较ya与result是否相同
		//if(result==ya){
		if(result.equals(ya)){
			System.out.println("猜对了");
		}else{
			System.out.println("猜错了");
		}
        
        System.out.println("本期号码:");
        System.out.println("a="+a);
		System.out.println("b="+b);
		System.out.println("c="+c);
	}
}
public class TestExer7_2{
	public static void main(String[] args){
		//1、随机产生3个1-6的整数
		int a = (int)(Math.random()*6 + 1);
		int b = (int)(Math.random()*6 + 1);
		int c = (int)(Math.random()*6 + 1);
		
		//2、判断随机产生的数的结果是什么
		int result;
		if(a == b && b == c){
			result = 1;//假设豹子为1
		}else if(a + b + c > 9){
			result = 2;//假设大为2
		}else{
			result = 3;//假设小为3
		}
		
		//3、用户从键盘输入押的是“豹子”、“大”、“小”
		java.util.Scanner input = new java.util.Scanner(System.in);		
		System.out.println("1、豹子");
		System.out.println("2、大");
		System.out.println("3、小");
		System.out.print("请选择:");
		int ya = input.nextInt();
		
		//4、判断用户的输入是否猜对了
		//比较ya与result是否相同
		if(result==ya){
			System.out.println("猜对了");
		}else{
			System.out.println("猜错了");
		}
		
		System.out.println("本期号码是:" + a + "," + b + "," + c);
	}
}

第4题:月份季节

需求:

根据用于指定月份,打印该月份所属的季节。

3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

public class TestExer9{
	public static void main(String[] args){
		//1、输入月份
		java.util.Scanner input = new java.util.Scanner(System.in);
		System.out.print("请输入月份:");
		int month = input.nextInt();
		
		switch(month){
			case 3:
			case 4:
			case 5:
				System.out.println("春季");
				break;
			case 6:
			case 7:
			case 8:
				System.out.println("夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println("秋季");
				break;
			case 12:
			case 1:
			case 2:
				System.out.println("冬季");
				break;
			default:
				System.out.println("输入有误!");
		}
	}
}

第5题:这一天是当年的第几天

需求:从键盘分别输入年、月、日,判断这一天是当年的第几天 。先不考虑非法值输入

注:判断一年是否是闰年的标准:

1)可以被4整除,但不可被100整除

2)可以被400整除

public class TestExer11{
	public static void main(String[] args){
		//1、从键盘分别输入年、月、日
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		System.out.print("年:");
		int year = input.nextInt();
		
		System.out.print("月:");
		int month = input.nextInt();
		
		System.out.print("日:");
		int day = input.nextInt();
		
		//判断这一天是当年的第几天==>从1月1日开始,累加到xx月xx日这一天
		//(1)[1,month-1]个月满月天数
		//(2)第month个月的day天
		//(3)单独考虑2月份是否是29天(依据是看year是否是闰年)
		
		//2、声明一个变量days,用来存储总天数,直接初始化为day,这样就不用再加day天了
		int days = day;
		
		//3、累加[1,month-1]个月满月天数
		switch(month){
			case 12:
				//累加的1-11月
				days += 30;//这个30是代表11月份的满月天数
				//这里没有break,继续往下走
			case 11:
				//累加的1-10月
				days += 31;//这个31是代表10月的满月天数
				//这里没有break,继续往下走
			case 10:
				days += 30;//9月
			case 9:
				days += 31;//8月
			case 8:
				days += 31;//7月
			case 7:
				days += 30;//6月
			case 6:
				days += 31;//5月
			case 5:
				days += 30;//4月
			case 4:
				days += 31;//3月
			case 3:
				days += 28;//2月
				//4、在这里考虑是否可能是29天
				if(year%4==0 && year%100!=0 || year%400==0){
					days++;//多加1天
				}
			case 2:
				days += 31;//1月
		}
		
		//5、输出结果
		System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + days + "天");
	}
}	  

第6题:累加和

需求:求1-100的和

	public static void main(String[] args){
		int sum = 0;//别忘了初始值
		
		//求1-100的累加和
		for(int i=1; i<=100; i++){
			sum += i;
		}
		
		//显示最终结果
		System.out.println("1-100的和是:" + sum);
	}
	public static void main(String[] args) {
		int i=1;
		int sum = 0;
		while(i<=100){
			sum +=i;
			i++;
		}
		System.out.println("1-100的和为:"+sum);
	}

第7题:猜数

需求:随机生成一个100以内的数,猜数字游戏

从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次

提示:随机数

(1)Math.random()

double num = Math.random();// [0,1)的小数

(2)java.util.Random rand = new java.util.Random();

int num= rand.nextInt(100);//[0,100)的整数

	public static void main(String[] args){
		//随机生成一个100以内的整数,[0,100)
		int randNum = (int)(Math.random()*100);
		
		//从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,
		java.util.Scanner input = new java.util.Scanner(System.in);
		int num;//挪到do{}上面,提升作用域
		int count = 0;//统计次数
		do{
			System.out.print("猜数(范围[0,100):");
			num = input.nextInt();
			
			count++;//输入一次,就代表猜一次
			
			if(num > randNum){
				System.out.println("大了");
			}else if(num<randNum){
				System.out.println("小了");
			}
		}while(num!=randNum);//条件成立,重复执行循环体语句
		
		System.out.println("一共猜了:" + count + "次");
	}
public static void main(String[] args){
		//随机生成一个100以内的整数,[0,100)
        java.util.Random rand = new java.util.Random();
		int randNum = rand.nextInt(100);
		
		//从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,
		java.util.Scanner input = new java.util.Scanner(System.in);
		int num;//挪到do{}上面,提升作用域
		int count = 0;//统计次数
		do{
			System.out.print("猜数(范围[0,100):");
			num = input.nextInt();
			
			count++;//输入一次,就代表猜一次
			
			if(num > randNum){
				System.out.println("大了");
			}else if(num<randNum){
				System.out.println("小了");
			}
		}while(num!=randNum);//条件成立,重复执行循环体语句
		
		System.out.println("一共猜了:" + count + "次");
	}

第8题:水仙花数

需求:

输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。

例如: 153 = 1*1*1 + 5*5*5 + 3*3*3

/*
 * 练习:打印所有的水仙花数
 * 
 * 分析:
 * 		什么是水仙花数呢?
 * 			所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
 *			举例:153就是一个水仙花数。
 *			153 = 1*1*1 + 5*5*5 + 3*3*3
 *
 *		1.三位数其实就告诉了我们水仙花数的范围
 *			100-999
 *		2.如何获取一个数据的每一个位上的数呢?
 *			举例:我有一个数据153,请问如何获取到个位,十位,百位
 *			个位:153%10 = 3;
 *			十位:153/10%10 = 5;
 *			百位:153/10/10%10 = 1;
 *			千位:...
 *			万位:...
 *		3.让每个位上的立方和相加,并和该数据进行比较,如果相等,就说明该数据是水仙花数,在控制台输出
 */
public class ForTest04 {
	public static void main(String[] args) {
		//通过循环获取到每一个三位数
		for(int x=100; x<1000; x++) {
			//获取个位,十位,百位
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;
			
			//让每个位上的立方和相加,并和该数据进行比较,如果相等,就说明该数据是水仙花数,在控制台输出
			if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {
				System.out.println(x); 
			}
		}
	}
}

打印所有水仙花数的个数?

/*
 * 练习:打印所有的水仙花数共有多少个
 * 
 * 分析:
 * 		1.定义统计变量,初始化值是0
 * 		2.获取三位数,用for循环实现
 * 		3.获取三位数的个位,十位,百位
 * 		4.判断这个三位数是否是水仙花数,如果是,统计变量++
 * 		5.输出统计结果就可以了
 */
public class ForTest5 {
	public static void main(String[] args) {
		//定义统计变量,初始化值是0
		int count = 0;
		
		//获取三位数,用for循环实现
		for(int x=100; x<1000; x++) {
			//获取三位数的个位,十位,百位
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;
			
			//判断这个三位数是否是水仙花数,如果是,统计变量++
			if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {
				count++;
			}
		}
		
		//输出统计结果就可以了
		System.out.println("水仙花数共有:"+count+"个");
	}
}

第9题:完数

需求:

一个数如果恰好等于它的因子之和,这个数称为"完数"。(因子:除去这个数本身的约数)

例如6=1+2+3.编程 找出1000以内的所有完数

public static void main(String[] args){
		//找出1000以内的所有完数
		for(int i=1; i<1000; i++){
			//判断i是否是完数,如果是就打印i
			/*
			完数?
				一个数如果恰好等于它的因子之和
				例如:6的因子:1,2,3
					1,2,3,6是6的约数,能够把6给整除了
					因子:除了6本身以外的约数
				例如:18的因子:1,2,3,6,9   不是完数
			如何判断i是否是完数?
			(1)先找出i的所有的因子,并且累加它的所有的因子
			(2)判断因子之和与i是否相等,如果相等就是完数
			*/
			
			//(1)先找出i的所有的因子,并且累加它的所有的因子
			int iSum = 0;
			for(int j=1; j<i; j++){
				//如果j能够把i整除了,j就是i的因子
				if(i%j==0){
					iSum += j;
				}
			}
			
			//(2)判断因子之和与i是否相等,如果相等就是完数
			if(i == iSum){
				System.out.println(i);
			}
		}
	}

第10题:九九乘法表

	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();
		}
	}

public static void main(String[] args) {
		for(int i=1; i<=9; i++){
			/*
			每一行有三件事情:(1)打印n个\t(2)打印m个式子(3)换行
			*/
			//(1)打印n个\t
			/*
			当i=1,第1行,8个\t,j=1,2,3,4,5,6,7,8		j<=8	j<=9-i
			当i=2,第2行,7个\t,j=1,2,3,4,5,6,7		j<=7
			当i=3,第3行,6个\t,j=1,2,3,4,5,6
			。。。
			当i=8,第8行,1个\t,j=1,
			当i=9,第9行,0个\t,j=1,j<=0不满足一次也不执行		j<=9-i  j<=9-9									
			*/
			for(int j=1; j<=9-i; j++){
				System.out.print("\t");
			}
			
			//(2)打印m个式子
			/*
			当i=1,第1行,1个式子, k=1						k<=i
			当i=2,第2行,2个式子, k=1,2
			..
			当i=9,第9行,9个式子, k=1,2,3,4,5,6,7,8,9
			*/
			for(int k=1; k<=i; k++){
				System.out.print(i + "*" + k + "=" + i*k + "\t");
			}
			
			//换行
			System.out.println();
		}
	}

第11题:打印菱形

	public static void main(String[] args){
		//上半部分:正的等腰三角形
		//5行
		for(int i=1; i<=5; i++){
			//(1)打印空格
			/*
			当i=1,打印4个空格,j=4,3,2,1	j>=i
			当i=2,打印3个空格,j=4,3,2
			当i=3,打印2个空格,j=4,3
			当i=4,打印1个空格,j=4
			当i=5,打印0个空格,j=4,让循环条件一次都不满足
			*/
			for(int j=4; j>=i; j--){
				System.out.print("  ");
			}
			//(2)打印*
			/*
			当i=1,打印1个,j=1					j<=2*i-1
			当i=2,打印3个,j=1,2,3,
			当i=3,打印5个,j=1,2,3,4,5
			当i=4,打印7个,j=1,2,3,4,5,6,7
			当i=5,打印9个,j=1,2,3,4,5,6,7,8,9
			*/
			for(int j=1; j<=2*i-1; j++){
				System.out.print("* ");
			}
			//(3)换行
			System.out.println();
		}
		
		
		//下半部分:倒立的等腰三角形
		//4行
		for(int i=1; i<=4; i++){
			//(1)打印空格
			/*
			当i=1,1个空格,j=1		j<=i
			当i=2,2个空格,j=1,2	
			当i=3,3个空格,j=1,2,3
			当i=4,4个空格,j=1,2,3,4
			*/
			for(int j=1; j<=i; j++){
				System.out.print("  ");
			}
			//(2)打印*
			/*
			当i=1,7个*,j=1,2,3,4,5,6,7  j<=9-2*i;
			当i=2,5个*,j=1,2,3,4,5
			当i=3,3个*,j=1,2,3
			当i=4,1个*,j=1
			*/
			for(int j=1; j<=9-2*i; j++){
				System.out.print("* ");
			}
			//(3)换行
			System.out.println();
		}
	}

 

public static void main(String[] args){
		//上半部分:正的等腰三角形
		//5行
		for(int i=1; i<=5; i++){
			//(1)打印空格
			/*
			当i=1,打印4个空格,j=4,3,2,1	j>=i
			当i=2,打印3个空格,j=4,3,2
			当i=3,打印2个空格,j=4,3
			当i=4,打印1个空格,j=4
			当i=5,打印0个空格,j=4,让循环条件一次都不满足
			*/
			for(int j=4; j>=i; j--){
				System.out.print("  ");
			}
			//(2)打印*
			/*
			当i=1,打印1个,j=1					j<=2*i-1
			当i=2,打印3个,j=1,2,3,
			当i=3,打印5个,j=1,2,3,4,5
			当i=4,打印7个,j=1,2,3,4,5,6,7
			当i=5,打印9个,j=1,2,3,4,5,6,7,8,9
			*/
			for(int j=1; j<=2*i-1; j++){
				//不是全部打印*
				if(j==1 || j==2*i-1){
					System.out.print("* ");
				}else{
					System.out.print("  ");
				}
			}
			//(3)换行
			System.out.println();
		}
		
		
		//下半部分:倒立的等腰三角形
		//4行
		for(int i=1; i<=4; i++){
			//(1)打印空格
			/*
			当i=1,1个空格,j=1		j<=i
			当i=2,2个空格,j=1,2	
			当i=3,3个空格,j=1,2,3
			当i=4,4个空格,j=1,2,3,4
			*/
			for(int j=1; j<=i; j++){
				System.out.print("  ");
			}
			//(2)打印*
			/*
			当i=1,7个*,j=1,2,3,4,5,6,7  j<=9-2*i;
			当i=2,5个*,j=1,2,3,4,5
			当i=3,3个*,j=1,2,3
			当i=4,1个*,j=1
			*/
			for(int j=1; j<=9-2*i; j++){
				//不是全部打印*
				if(j==1 || j==9-2*i){
					System.out.print("* ");
				}else{
					System.out.print("  ");
				}
			}
			//(3)换行
			System.out.println();
		}
	}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯丰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值