6Java控制结构

摘要:
如果第一个数字大于10.0,第二个数字小于20.0,则打印两个数字的和//其目的是声明两个变量。这是一个单分支类IfEx01{publicstaticvoidmain{doubleum1=12.0;doubleum2=10.0;if{System.out.println;}System。出来println}}练习02//定义两个变量int,确定两个变量的和是否可以被3和5整除,并打印提示消息,//如果不能,则打印另一个case publicclassIfEx02{publicstaticvoidmain{intnum1=10;intnum2=5;intsum=num1+num2;If{System.out.println;}else{System.out.println}}练习03//判断一年是否为闰年。闰年的条件如下two://The年可以除以4,但不能除以100;可以被400 importjava.util.Scanner整除;ClassIfEx03{publicstaticvoidmain{//判断年份//ifelseScanneryScanner=newScanner;System.out.println;intyear=myScanner.netInt();if((年份%4==0&&year%100!//)并根据性别提示输入男子或女子组。//输入要判断的分数和性别并输出信息。

顺序结构

  • 从上到下依次执行,中间没有判断和跳转
  • 比如Java中定义变量中的前向应用,先定义,在使用
  • 6Java控制结构第1张

分支结构(if, else, switch)

  • 单分支 if
    6Java控制结构第2张
// if 的快速入门
import java.util.Scanner;
class if01{

	public static void main(String[] args) {
		
		// 编写一个程序,可以输入人的年龄,如果该同志年龄大于18
		// 则输出“年龄大于18,对自己的行为负责”
		// 思路分析
		// 1.定义一个变量,接受输入的年龄 Scanner
		// 2.保存在一个变量中 int age
		// 3.使用if判断
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年龄:");
		int age = myScanner.nextInt();
		if(age > 18){
			System.out.println("你的年龄大于18,对自己的行为负责");
		}

		System.out.println("程序继续.....");

	}
}
  • 双分支 if... else....
    6Java控制结构第3张
// if-else 的快速入门
import java.util.Scanner;
class if02{

	public static void main(String[] args) {
		
		// 编写一个程序,可以输入人的年龄,如果该同志年龄大于18
		// 则输出“年龄大于18,对自己的行为负责”,否则输出“你的年龄不大,这次放过你”
		// 思路分析
		// 1.定义一个变量,接受输入的年龄 Scanner
		// 2.保存在一个变量中 int age
		// 3.使用if-else判断
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年龄:");
		int age = myScanner.nextInt();
		if (age > 18){
			System.out.println("你的年龄大于18,对自己的行为负责");
		}
		else {
			System.out.println("你的年龄不大,这次放过你");
		}

		System.out.println("程序继续.....");

	}
}
  • 练习1
// 编写程序,声明 2 个 double 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小于 20.0,打印两数之和。
// 想法 声明两个变量, 这个是一个单分支

class IfEx01{

	public static void main(String[] args) {
		
		double num1 = 12.0;
		double num2 = 10.0;

		if(num1 > 10 && num2 < 20){
			System.out.println("两数之和:" + (num1 + num2));
		}

		System.out.println("程序继续....")

	}
}
  • 练习02
//【课后自己练】定义两个变量 int,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息,
//不成立就打印另外一种情况
public class IfEx02{
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 5;
		int sum = num1 + num2;

		if (sum%3 ==0 && sum%5== 0){
			System.out.println("两数之和可以被3和5整除");
		}
		else{
			System.out.println("两个数不能被3和5整除");
		}
		

	}
}
  • 练习03
//判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
//(1)年份能被 4 整除,但不能被 100 整除;(2)能被 400 整除
import java.util.Scanner;
class IfEx03{

	public static void main(String[] args) {
		// 判断年份
		// if else
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = myScanner.nextInt();

		if ((year % 4 ==0 && year % 100 != 0) || (year % 400 == 0)){
			System.out.println(year + "是闰年");
		}
		else{
			System.out.println(year + "不是闰年,是平年");
		}

	}
}
  • 多分支 if... else if ... else
    6Java控制结构第4张
  • 多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
  • 如果所有的表达式都不成立,则默认执行else
// if -else if.. else
// 
import java.util.Scanner;

public class If03{

	public static void main(String[] args) {
		/*
		信用分为 100 分时,输出 信用极好; 
		2) 信用分为(80,99]时,输出 信用优秀;
		3) 信用分为[60,80]时,输出 信用一般; 
		4) 其它情况 ,输出 信用 不及格 
		5) 请从键盘输入保国的芝麻信用分,并加以判断
		 */
		// 接受用户输入
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入信用分:");
		int creditGrade = myScanner.nextInt();
		// 先对输入的信用分,进行一个范围的判断,否则提示输入错误
		if (creditGrade <= 100) {
			// 因为是4种情况,用多分支
			if (creditGrade == 100){
				System.out.println("信用极好");
			}
			else if (creditGrade > 80){
				System.out.println("信用优秀");
			} 
			else if (creditGrade >= 60){
				System.out.println("信用一般");
			}
			else{
				System.out.println("信用不及格");
			}
		}
		else{
			System.out.println("信用分需要在1-100,请重新输入");
		}
		

		
	}
}
  • 嵌套分支,嵌套不要超过三层
//参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。
//并且根据性别提示进入男子组或女子组。【可以 让学员先练习下】, 
//输入成绩和性别,进行判断和输出信息。[NestedIf.java]

import java.util.Scanner;
public class NestedIf{
	public static void main(String[] args) {
		
		// 输入成绩和性别
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入成绩");
		double score = myScanner.nextDouble();
		

		// 判断初赛成绩
		if (score > 8.0){

			System.out.println("请输入性别:");
			String string = myScanner.next();
			char gender = string.charAt(0);
			if (gender == '男'){
				System.out.println("你已经进入男子组");
			}
			else if (gender == '女'){
				System.out.println("你进入的是女子组");
			}
			else{
				System.out.println("你的性别输入错误,请重新输入");
			}
		}
		else{
			System.out.println("sorry, 你已被淘汰");
		}
	}
}
  • 练习
// 出票系统,根据淡旺季的月份和年龄,打印票价
// 需求: 
// 接受月份和年龄
// 进行判断

import java.util.Scanner;

class Ticket{

	public static void main(String[] args) {
		
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入月份:");
		int month = myScanner.nextInt();
		System.out.println("请输入年龄:");
		int age = myScanner.nextInt();
		double ticket = 60;

		if (month >= 4 && month <=10){
			if (age > 60){
				System.out.println("老人,票价:" + ticket/3);
			}
			else if(age >= 18 && age <= 60) {
				System.out.println("成年人,票价:" + ticket);
			}
			else{
				System.out.println("儿童,半价票,票价:" + ticket/2);
			}

		}
		else{
			if (age >= 18 && age <= 60){
				System.out.println("成人票价:" + 40);
			}
			else{
				System.out.println("其他票价:" + 20);
			}

		}

	}
}

switch

6Java控制结构第5张

  • 没有break,就会进入到第二个case中
import java.util.Scanner;
//请编写一个程序,该程序可以接收一个字符,
//比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二
public class Switch01{

	public static void main(String[] args) {
		/*
		思路分析:
		1. 接受一个字符
		2. switch判断
		 */
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入字符:(a, b, c, d, e开头)");
		char charter = myScanner.next().charAt(0);

		switch(charter) {
			case 'a': 
				System.out.println("星期一");
				System.out.println("多写一句");
				break;
			case 'b':
				System.out.println("星期二");
				break;
			case 'c':
				System.out.println("星期三");
				break;
			case 'd':
				System.out.println("星期四");
				break;
			case 'e':
				System.out.println("星期五");
				break;
			case 'f':
				System.out.println("星期六");
				break;
			case 'g':
				System.out.println("星期天");
				break;
			default:
				System.out.println("你输入的字符不正确,请重新输入");
		}

                System.put.println("推出了switch");

	}
}
  • 细节
    6Java控制结构第6张
public class SwitchDetail{

	public static void main(String[] args) {
		
		//  细节1
		//  表达式数据类型,应该和case后的常量类型一致
		//  或者饿死可以自动转换的类型,比如字符,而常量是 int
		//  细节2,switch(表达式),表达式的返回值必须是(byte,short, int, char, enum(), String)
		//  
		//  细节3
		//  case子句中的值必须是常量或者常量表达式,二不能是变量;
		//  
		//  细节4,default是可选的
		//  
		//  细节5,如果没有break,程序会顺序执行到switch结尾
		char c = 'a';
		char d = 'c';
		// double d = 12.9;

		switch(c){
			case 'a':
				System.out.println("ok1");
				// break;
			case 'c':
				System.out.println("ok2");
				break;
			// default:
			// 	System.out.println("ok3");

		}
	}
}
  • 练习
//1) 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 "other"。 
//2) 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100), 提示 成绩/60 
//3) 根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使 用穿透


import java.util.Scanner;

public class SwitchEx{

	public static void main(String[] args) {
		
		Scanner myScanner = new Scanner(System.in);
		// 1使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 "other"。
		System.out.println("请输入字符:");
		char chacter = myScanner.next().charAt(0);

		switch (chacter){
			case 'a':
				System.out.println("A");
				break;
			case 'b':
				System.out.println("B");
				break;
			case 'c':
				System.out.println("C");
				break;
			case 'd':
				System.out.println("D");
				break;
			case 'e':
				System.out.println("E");
				break;
			default:
				System.out.println("other");

		}
		// 2) 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100), 提示 成绩/60 
		System.out.println("请输入成绩:");
		double score = myScanner.nextDouble();

		switch ((int)(score / 60)){
			case 1:
				System.out.println("合格");
				break;
			case 0:
				System.out.println("不合格");
				break;
			default:
				System.out.println("输入有误");
		}
		
		//3) 根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使 用穿透
		System.out.println("请输入月份:");

		int month = myScanner.nextInt();

		switch(month / 3){
			case 0:
				System.out.println("冬季");
				break;
			case 1:
				System.out.println("春季");
				break;
			case 2:
				System.out.println("秋季");
				break;
			case 3:
				System.out.println("冬季");
				break;

		}

	}
}
  • switch和if的比较
  • 如果判断的具体数值不多,而且符合byte,short, int, char, enum, String,虽然两个语句可以用,建议使用switch语句
  • 其他情况,对区间判断,if判断结果更广

循环结构(for, while, do while, 多重循环)

  • for 循环控制
    6Java控制结构第7张
public class For01{
	public static void main(String[] args) {
		
		// // 打印10万句,你好,韩顺平教育
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// System.out.println("你好,韩顺平教育");
		// for 循环控制
		for(int i = 1; i <= 80; i++){
			System.out.println("你好,韩顺平教育" + i);
		} 

	}
}
  • For 细节
// for 循环控制的细节
public class ForDetail{

	public static void main(String[] args) {
		//1) 循环条件是返回一个布尔值的表达式 
		//2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。 
		//3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代 语句,中间用逗号隔开。 
		//4) 使用内存分析法,老师分析输出下面代码输出什么?
		//
		//
		//2
		// int i = 1;
		// for(; i <= 10; ){
		// 	System.out.println("你好,韩顺平教育");
		// 	i++;
		// }

		// System.out.println("i=" + i);

		// 补充,无限循环
		// int j = 1;
		// for(;;){
		// 	System.out.println("你真是很厉害:" + j);
		// 	j++;
		// }
		// 
		// 3.循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开
		int count = 3;

		for(int i  = 0, j = 0; i <= count; i++, j+=2){
			System.out.println("i = " + i + " j = " + j);
			System.out.println("坚持就是胜利");
		}

	}
}
  • for 练习1
  • 不知道怎么写代码?掌握重要的编程思想,化繁为简,先死后活
  • 两个编程思想
  • 1.化繁为简,将复杂的需求拆解成简单的需求,逐步完成
  • 2.先死后活,先考虑固定的值,然后转成灵活变化的值
public class ForEx01{

	public static void main(String[] args) {
		
		// 1) 打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和.[化繁为简,先死后活]
		//
		//化繁为简
		// 1.完成输出1-100的值]
		// 2.在输出的过程中,进行过滤,只输出9的倍数
		// 3.统计个数,定义一个变量,int count=0, 当条件满足时 count++;
		// 4.总和,定义一个变量,int sum = 0; 当条件满足时累计求和
		// 
		// 
		// 先死后活
		// 1.为了更好的需求,我们把范围开始的值,结束的值设置为变量
		// 2.还可以更近一步, 9倍数也做成变量 Int t = 9;
		int count = 0;
		int sum = 0;
		int start = 10;
		int end = 200;
		int t = 9;
		for (int i = start; i <= end; i++){
			if(i % t == 0){
				System.out.println("i = " + i);
				count++;
				sum += i;

			}
			
		}
		System.out.println("count = " + count);

		// 下面是自己写的,虽然代码是正确的,但是没有思考过程
		// int count = 0;
		// int sum = 0; 
		// for(int i = 1; i <= 100; i++){
		// 	if (i % 9 == 0){
		// 		count++;
		// 		sum += i;
		// 	}
		// }
		// System.out.println("count = " + count + " sum = " + sum);


	}
}
  • 练习2
public class ForEx02{
	public static void main(String[] args) {
		
		// 化繁为简
		// 1.先输出 0 - 5
		// 2.后面的+是 5 - i
		// 
		// 先死后活
		// 1. 5替换为n
		
		int n = 10;

		for(int i=0; i <= n; i++){
			System.out.println(i + " + " + (n-i) + " = " + n);
		}
		// for(int i=0, j=5; i <= 5; i++, j--){
		// 	System.out.println(i + " + " + j + " = " + (i + j));
		// }
	}
}

while

6Java控制结构第8张

// while 循环的案例
// 
public class While01{
	public static void main(String[] args) {
		
		int i = 1;
		while(i <= 10) {
			System.out.println("你好,韩顺平教育" + i);
			i++;  // 循环变量迭代
		}

		System.out.println("退出while, 继续执行....");
	}
}
  • while 注意细节
  1. 循环条件是返回一个布尔值的表达式
  2. while 循环是先判断再执行语句
  • while 练习
// 1) 打印 1—100 之间所有能被 3 整除的数 [使用 while, 老师评讲 ]
// 
public class WhilleEx01{

	public static void main(String[] args) {
		
		// 化繁为简,先死后活
		// int i = 1;

		// while(i <= 100){
		// 	if(i % 3 == 0)
		// 		System.out.println("i=" + i);
		// 	i++;
		// }
		// 
		// 
		// 2) 打印 40—200 之间所有的偶数 [使用 while, 课后练习]
		int i = 40;

		while (i <= 200){

			if(i % 2 == 0){
				System.out.println("i=" + i);
			}
			i++;
		}
	}
}

  • do...while 循环控制
    6Java控制结构第9张
  • do while 细节
    1)循环条件是一个返回布尔值的表达式
    2)do..while 循环是先执行,然后在判断,至少执行一次
  • do while 练习
import java.util.Scanner;

public class DoWhileEx01{

	public static void main(String[] args) {
		
		// 打印1-100
		// 
		// System.out.println("打印100");

		// int i = 1;
		// do{
		// 	System.out.println("i=" + i);
		// 	i++;
		// } while(i <= 100);

		// System.out.println("do while 结束,程序继续");


		// 计算1-100和
		// int j = 1;
		// int sum = 0;
		// do {
		// 	sum += j;
		// 	j++;
		// } while(j <= 100);

		// System.out.println("1-100的和sum=" + sum);

		//统计 1---200 之间能被 5 整除但不能被 3 整除的个数
		//
		
		// int k = 1;
		// int count = 0;

		// do {
		// 	if (k % 5 == 0 && k % 3 != 0){
		// 		count++;
		// 	}
		// 	k++;
		// }while(k <= 200);

		// System.out.println("count = " + count);
		// 
		// 如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止
		Scanner myScanner = new Scanner(System.in);
		// char anwser = ' ';
		do{
			System.out.println("使出闪电五连鞭");
			System.out.println("还钱吗?(y/n):");

			char anwser = myScanner.next().charAt(0);

		} while (anwser != 'y');

		System.out.println("李四还钱了");
	}
}

多重循环(重点)

  1. 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while 均可以作为外层循环和内层循环。 【建议一般使用两层,最多不要超过 3 层, 否则,代码的可读性很差】
  2. 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内 层循环,才可结束外层的当次循环,开始下一次的循环[听不懂,走案例]。
  3. 设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次
public class MulFor{

	public static void main(String[] args) {
		
		for (int i = 0; i < 2; i++){
			for (int j = 0; j < 3; j++){
				System.out.println("i = " + i + " j = " + j);
			}
		}
	}
}
  • 多重循环的练习题
// 统计 3 个班成绩情况,每个班有 5 名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]
import java.util.Scanner;

public class MulForEx01{
	public static void main(String[] args) {
		
		// 统计 3 个班成绩情况,每个班有 5 名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]
		// 3 * 5
		// 思路,先求出一个班级的学生的平均分
		// 然后在求出三个班级的平均分
		// 化繁为简,先死后活
		double stuScore;
		double classScore;
		double allScore;
		Scanner myScanner = new Scanner(System.in);
		double avgAllScore = 0;
		int classNum = 3; // 班级数量
		int stuNum = 5; // 学生数量
		int passNum = 0; // 及格人数

		for (int i = 1; i <= classNum; i++){
			double avgClassScore = 0;

			for (int j = 1; j <= stuNum; j++){
				System.out.println("请输出第" + i + "班级的第" + j + "学生的成绩");
				stuScore = myScanner.nextDouble();
				if (stuScore >= 60){
					passNum++;
				}
				avgClassScore += stuScore;
				avgAllScore += stuScore;
			}

			System.out.println("第" + i + "班级的平均分:" + avgClassScore/stuNum);
		}
		System.out.println("所有及格的人数:" + passNum);
		System.out.println("所有的班级平均分:" + avgAllScore/(stuNum * classNum));
	}
}

-- 九九乘法表

// 统计 3 个班成绩情况,每个班有 5 名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]
import java.util.Scanner;

public class MulForEx01{
	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 + "    ");
			}
			System.out.println();
		}
	}
}
  • 打印金字塔,学到颇多,如何有章法的分析问题
public class Stars{

	public static void main(String[] args) {
		/*
		思路分析:
		化繁为简,先死后活

		1.化繁为简
		1.先打印矩形
		*****
		*****
		*****
		*****
		*****
		2.打印半个金字塔
		*
		**
		***
		****
		*****
		3.打印整个金字塔
		*     1  空格  5 - 1
	   ***    3        5 - 2
	  *****   5
	 *******  7
	********* 9
		 */
		
		for(int j = 1; j <= 5; j++){
			// 控制每层" "的个数
			for(int k = 1; k <= 5 - j; k++){
					System.out.print(" ");
			}
			// 控制每层*的个数
			for(int i = 1; i <= 2*j-1; i++){
				
				System.out.print("*");
			}

			System.out.println();
		}
		

	}
}
  • 打印空心金字塔
public class Stars{

	public static void main(String[] args) {
		/*
		思路分析:
		化繁为简,先死后活

		1.化繁为简
		1.先打印矩形
		*****
		*****
		*****
		*****
		*****
		2.打印半个金字塔
		*
		**
		***
		****
		*****
		3.打印整个金字塔
		*     1  空格  5 - 1  
	   ***    3        5 - 2
	  *****   5
	 *******  7
	********* 9
	    4. 打印空心金字塔
	    *     1  空格  5 - 1    空心0
	   * *    3        5 - 2       1
	  *   *   5                    3
	 *     *  7                    5
	********* 9
		 */
		
		for(int i = 1; i <= 5; i++){
			// 控制每层" "的个数
			if(i <= 4){
				for(int k = 1; k <= 5 - i; k++){
					System.out.print(" ");
				}
				// 控制每层*的个数
				System.out.print("*");
				for(int j = 1; j <= 2*i-3; j++){
					System.out.print(" ");
				}
				if (i > 1){
					System.out.print("*");
				}
				
			}
			else{
				System.out.print("*********");
			}
			

			System.out.println();
		}
		

	}
}
  • 自己写的比较蠢,老师的比较精炼
public class Stars{

	public static void main(String[] args) {
		/*
		思路分析:
		化繁为简,先死后活

		1.化繁为简
		1.先打印矩形
		*****
		*****
		*****
		*****
		*****
		2.打印半个金字塔
		*
		**
		***
		****
		*****
		3.打印整个金字塔
		*     1  空格  5 - 1  
	   ***    3        5 - 2
	  *****   5
	 *******  7
	********* 9
	    4. 打印空心金字塔
	    *     1  空格  5 - 1    空心
	   * *    3        5 - 2
	  *   *   5
	 *     *  7
	********* 9
		 */
		// 先死后活
		//  int totalLevel = 5;
		// 
		int totalLevel = 20;
		for(int i = 1; i <= totalLevel; i++){
			// 控制每层" "的个数
			for(int k = 1; k <= totalLevel - i; k++){
					System.out.print(" ");
			}
			// 控制每层*的个数
			for(int j = 1; j <= 2*i-1; j++){
				if(j == 1 || j == 2*i-1 || i == totalLevel){
					System.out.print("*");
				}
				else{
					System.out.print(" ");
				}
			}

			System.out.println();
		}
		

	}
}
  • 打印空心菱形,比较笨
public class Stars{

	public static void main(String[] args) {
		/*
		思路分析:
		化繁为简,先死后活

		1.化繁为简
		1.先打印矩形
		*****
		*****
		*****
		*****
		*****
		2.打印半个金字塔
		*
		**
		***
		****
		*****
		3.打印整个金字塔
		*     1  空格  5 - 1  
	   ***    3        5 - 2
	  *****   5
	 *******  7
	********* 9
	    4. 打印空心金字塔
	    *     1  空格  5 - 1    空心
	   * *    3        5 - 2
	  *   *   5
	 *     *  7
	********* 9
		 */
		// 先死后活
		//  int totalLevel = 5;
		// 
		int totalLevel = 5;
		for(int i = 1; i <= totalLevel; i++){
			// 控制每层" "的个数
			for(int k = 1; k <= totalLevel - i; k++){
				System.out.print(" ");
				
			}
			// 控制每层*的个数
			for(int j = 1; j <= 2*i-1; j++){
				if(j == 1 || j == 2*i-1){
					System.out.print("*");
				}
				else{
					System.out.print(" ");
				}
			}
			
			
			System.out.println();
		}

		// 倒过来打印即可
		for(int i = 1; i <= totalLevel; i++){
			// 控制每层" "的个数
			for(int k = 1; k <= i; k++){
				System.out.print(" ");
				
			}
			// 控制每层*的个数
			for(int j = 1; j <= 2*(totalLevel-i)-1; j++){
				if(j == 1 || j == 2*(totalLevel-i)-1){
					System.out.print("*");
				}
				else{
					System.out.print(" ");
				}
			}
			
			
			System.out.println();
		}


	}
}

break

当循环满足条件时,可以终止循环
6Java控制结构第10张


public class Break01{

	public static void main(String[] args) {
		
		for(int i = 0; i < 10; i++){
			if(i == 3){
				break;
			}
			System.out.println("i = " + i);
		}

		System.out.println("退出for循环");
	}
}
  • break细节
    6Java控制结构第11张
  • 可以终止选择的循环
public class BreakDetail{

	public static void main(String[] args) {
		
		label1:
		for(int j=0; j < 4; j++){
		abc:
			for(int i = 0; i < 10; i++){
				if(i == 2){
					break label1;
				}
				System.out.println("i = " + i);
			}
		}
	}

}
  • break练习1
public class BreakEx01{
	public static void main(String[] args) {
		// 1-100 以内的数求和,求出 当和 第一次大于 20 的当前数 【for + break】
		
		int sum = 0;
		// i的作用范围在 for {}
		// 定义一个变量n, 把当前的i赋值为n
		int n = 0;
		for (int i = 1; i <= 100; i++){
			sum += i;
			if (sum > 20){
				System.out.println("和大于20的时候,当前数i=" + i);
				n = i;
				break;
			}

		}

		System.out.println("和大于20的时候,当前数n=" + n);
	}
}
  • break练习2
// 实现登录验证,有 3 次机会,
// 如果用户名为"丁真" ,密码"666"提示登录成功,否则提示还有几次机会,请使用 for+break 完成 

import java.util.Scanner;

public class BreakEx02{
	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
		int chance = 3;
		for (int i = 1; i <= 3; i++){
			System.out.println("请输入用户名:");
			String name = myScanner.next();
			System.out.println("请输入密码:");
			String password = myScanner.next();

			// 字符串比较 equals
			if (name.equals("丁真") && password.equals("666")){
				System.out.println("登录成功....");
				break;
			}
			chance--;
			System.out.println("你还剩" + chance + "次机会");
		}
	}
}

continue

  • 用于结束本次循环,开始下一次的循环
  • continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的 使用的规则一样
  • 快速入门
public class Continue01{
	public static void main(String[] args) {
		// 代码
		int i = 1;
		while (i <= 4){
			i++;
			if (i == 2){
				continue;
			}
			System.out.println("i = " + i);
		}

	}
}
  • continue 细节
public class ContinueDetail{

	public static void main(String[] args) {
		
		label1:
		for(int j = 0; j < 4; j++){
			label2:
			for(int i = 0; i < 10; i++){
				if (i == 2){
					// 看看分别输出什么值
					// continue label2; // continue;
					continue label1;
				}
				System.out.println("i = " + i);
			}
		}
	}
}

return

  • 跳出方法

public class Return01{
	public static void main(String[] args) {
		
		for(int i = 1; i<=5; i++){
			if(i == 3){
				System.out.println("教育 " + i);
				return;
			}
			System.out.println("Hello World~");
		}

		System.out.println("go on..");
	}
}

控制结构的作业

  • 作业1
    1.某人有100000元,经过一次路口进行缴费,现金 > 50000时,交 5%
    现金 <= 50000时,每次交1000
    问题,该人可以经过多少次路口
// 1.某人有100000元,经过一次路口进行缴费,
// 现金 > 50000时,交 5%
// 现金 <= 50000时,每次交1000
// 问题,该人可以经过多少次路口
public class HomeWork01{
	public static void main(String[] args) {
		int count = 0;
		double moneySum = 100000;

		while (moneySum > 0){
			if (moneySum > 50000){
				moneySum -= moneySum * 0.05;
				count++;
			}
			else if (moneySum <= 50000 & moneySum >= 1000){
				moneySum -= 1000;
				count++;
			}
			else {
				break;
			}
		}

		System.out.println("count的值:" + count);	

	}
}
  • 作业2
    实现判断一个整数,属于哪个范围 大于0, 小于0, 等于0
// 实现判断一个整数,属于哪个范围 大于0, 小于0, 等于0
import java.util.Scanner;

public class HomeWork02{
	public static void main(String[] args) {
		
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int num = myScanner.nextInt();

		if (num > 0){
			System.out.println("这个整数大于0");
			System.out.println("num 是 " + num);
		}
		else if (num < 0) {
			System.out.println("这个整数小于0");
			System.out.println("num 是 " + num);
		}
		else {
			System.out.println("这个整数等于0");
			System.out.println("num 是 " + num);
		}

	}
}
  • 作业3
    判断一个年份是闰年
// 判断一个年份是闰年
import java.util.Scanner;

public class HomeWork03{
	public static void main(String[] args) {
		
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入一个年份:");
		int year = myScanner.nextInt();

		if(year % 400 == 0 || (year%4==0 && year%100 != 0)){
			System.out.println("年份" + year + "是闰年");
		}
		else{
			System.out.println("该年份" + year + "是平年");
		}

	}
}
  • 作业4
    判断一个三位数是否是水仙花数,153 = 111 + 333 + 555
// 判断一个三位数是否是水仙花数,153 = 1*1*1 + 3*3*3 + 5*5*5
import java.util.Scanner;

public class HomeWork04{
	public static void main(String[] args) {
		System.out.println("请输入一个三位数:");
		Scanner myScanner = new Scanner(System.in);
		int num = myScanner.nextInt();

		int singal_digit = num % 10;
		int ten_digits = (num % 100) / 10;
		int hundreds = num / 100;

		int cubeNum = singal_digit*singal_digit*singal_digit + ten_digits*ten_digits*ten_digits + hundreds*hundreds*hundreds;

		if (num == cubeNum){
			System.out.println(num + "该数字是水仙花数");
		}
		else{
			System.out.println(num + "该数字不是水仙花数");
		}



	}
}
  • 作业5
    输出1-100不能被5整除的数,每五个一行
// 输出1-100不能被5整除的数,每五个一行
public class HomeWork05{
	public static void main(String[] args) {
		
		for (int i = 1; i <= 100; i++){
			if (i % 5==0){
				System.out.println();
				continue;
			}
			System.out.print(i + " ");
		}
	}
}

更优的做法

// 输出1-100不能被5整除的数,每五个一行
public class HomeWork05{
	public static void main(String[] args) {
		
		// 哨兵
		int count =  0;
		for (int i = 1; i <= 100; i++){
			count++;
			if (i % 5 != 0){
				System.out.print(i + "\t");
			}

			if (count % 5 == 0){
				System.out.println();
			}
		}
	}
}
  • 作业6
    输出小写的a-z,输出大写的Z-A
// 输出小写的a-z,输出大写的Z-A
public class HomeWork06{
	public static void main(String[] args) {
		
		
		for (char i = 'a'; i <= 'z'; i++){
			System.out.print(i + " ");
		}
		System.out.println();
		for (char i = 'Z'; i >= 'A'; i--){
			System.out.print(i + " ");
		}
	}
}
  • 作业7
    求1-1/2+1/3-1/4......-1/100
// 求1-1/2+1/3-1/4......-1/100
public class HomeWork07{
	public static void main(String[] args) {
		double sum = 0;

		for(int i = 1; i <= 100; i++){
			if (i % 2 != 0){
                                // 主要要把分子写成1.0
				sum += 1.0/i;
			}
			else{
				sum -= 1.0/i;
			}
		}
		System.out.println("sum = " + sum);
	}
}
  • 作业8
    求 1 + (1+2) + (1+2+3) + (1+2+3.....+100)
// 求 1 + (1+2) + (1+2+3) + (1+2+3.....+100)
public class HomeWork08{
	public static void main(String[] args) {
		int sum = 0;

		for(int i=1; i<=100; i++){
			int branchSum = 0;
			for (int j = 1; j <= i; j++){
				branchSum += j;
			}
			sum += branchSum;
		}

		System.out.println("sum = " + sum);
	}
}

免责声明:文章转载自《6Java控制结构》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP树结构,实现无限分级ZYNQ Linux 移植:包含petalinux移植和手动移植debian9下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第14次作业

1、请按照以下要求设计一个学生类Student,并进行测试。要求如下:1)Student类中包含姓名、成绩两个属性2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值4)在测试类中创建两个Student对象,一个使用无参的构造方...

Python小数向上取整和向下取整

Python小数向上取整和向下取整 首先需要导入math模块 import math 小数向上取整使用ceil函数 import mathf_num = 3.1 f_num = math.ceil(f_num) print(f_num) 小数向下取整使用floor函数 import math d_num = 3.9 d_num = math.floor...

前台开发—-实现商品添加到购物车

分析订单表和订单项表 一个用户可以有多个订单 订单表: order 列名 类型 说明 备注 id int id 主键 total float 总价 amount int 商品总数 status tinyint 订单状态 (1未付款/2已付款/3已发货/4已完成) paytype tinyint 支付方式 (1微信/2支付宝/3货...

Jenkins执行python脚本

构建选择Excute Windows batch command 下面是python脚本,注意字符集GBK runtest.py #-*-coding:GBK -*- importsys importtime importpymysql importrequests #print(sys.argv[1]) ids_out =[] #用","分割,得...

Java Properties 类读取配置文件信息

在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么IP,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决。 各种语言都有自己所支持的配置文件类型。比如Pytho...

delphi idhttp 实战用法(TIdhttpEx)

以delphi XE8 自带indy(10.5.8.0)组件为例,分享实战中遇到的问题及解决方法。 TIdHttpEx 用法实例01[多线程获取网页](包含完整源码) 实例02(如何Post参数,如何保存与提取Cookie)待写 TIdHttpEx 已实现了对GZIP的解压,对UTF-8编码解码等 本文包含以下几个单元 uIdhttp.pas (TIdHt...