JavaSE基础 第六章 控制语句

JavaSE基础 第六章 控制语句

1. 控制语句概述

  1. 分类:
    选择语句
    循环语句
    转向语句

  2. 选择语句也叫分支语句:
    if
    switch

  3. 循环语句:
    for
    while
    do…while

  4. 转向语句:
    break
    continue
    return ( 这个目前不需要学习, 后面讲方法的时候会使用. )

2. 选择语句

if

  1. 语法格式:

第一种写法:

	if(布尔表达式){
		java语句;
		java语句;
	}
	这里的一个大括号{}叫做一个分支
	
	执行原理:
		如果布尔表达式的结果为true, 则执行大括号
		中的程序, 否则大括号中的代码不执行.

第二种写法:

	if(布尔表达式){	// 分支1
		java语句;
	}else{			// 分支2
		java语句;
	}

	执行原理:
		如果布尔表达式的结果为true, 则执行分支1
		中的程序, 分支2不执行, 为false, 分支1不执行, 执行分支2.

第三种写法:

	if(布尔表达式1){	// 分支1
		java语句;
	}else if(布尔表达式2){ // 分支2
		java语句;
	}else if(布尔表达式3){ // 分支3
		java语句;
	}...

	执行原理:
		先判断布尔表达式1, 为true, 执行分支1, 然后就结束了.
		当表达式1为false, 则判断表达式2, 为true, 执行分支2, 结束.
		...
  1. 注意:
    对于if语句来说, 在任何情况下只能有1个分支执行, 不可能存在2个或者多个分支执行.
    if语句只要有一个分支执行了, 整个if语句就结束了.

    凡是带有else的, 一定会保证有一个分支执行.

    当分支只有一个java语句时, 大括号可以省略.

  • 业务1:
public class IfTest01{
	public static void main(String[] args){
		// 业务1: 当sex为true时表示男, 为false时为女.

		java.util.Scanner s = new java.util.Scanner(System.in);
		boolean sex = s.nextBoolean();
	/*
		if(sex){
			System.out.println('男');
		}else{
			System.out.println('女');
		}
	*/

		// 改良, 使用三目运算符
		System.out.println(sex ? '男' : '女');

		if (sex)
			System.out.println('男');
			System.out.println("hello");	// 没有问题 
		
		// 错误: 有 'if', 但是没有 'else'
		/*
		else
			System.out.println('女');
		*/
	}
}
  • 业务2:
/*
	业务要求:
		1. 从键盘上接收一个人的年龄
		2. 年龄要求为[0-150], 其他值表示非法, 需要提示非法信息
		3. 根据人的年龄来动态的判断这个人属于生命的哪个阶段?
			[0-5]婴幼儿
			[6-10]少儿
			[11-18]少年
			[19-35]青年
			[36-55]中年
			[56-150]老年
		4. 请使用if语句完成以上的业务逻辑.
*/
public class IfTest02{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入年龄: ");
		int nianLing = s.nextInt();
	/*
		if(nianLing >= 0 && nianLing <= 5){
			System.out.println("婴幼儿");
		}else if(nianLing >= 6 && nianLing <= 10){
			System.out.println("少儿");
		}else if(nianLing >= 11 && nianLing <= 18){
			System.out.println("少年");
		}else if (nianLing >= 19 && nianLing <= 35){
			System.out.println("青年");
		}else if (nianLing >= 36 && nianLing <= 55){
			System.out.println("中年");
		}else if (nianLing >= 56 && nianLing <= 150){
			System.out.println("老年");
		}else {
			System.out.println("非法信息, 请重新输入!");
		}
	*/
		// 改进:
	/*
		if(nianLing < 0 || nianLing > 150){
			System.out.println("非法信息, 请重新输入!");
		}else if(nianLing <= 5){
			System.out.println("婴幼儿");
		}else if(nianLing <= 10){
			System.out.println("少儿");
		}else if(nianLing <= 18){
			System.out.println("少年");
		}else if (nianLing <= 35){
			System.out.println("青年");
		}else if (nianLing <= 55){
			System.out.println("中年");
		}else {
			System.out.println("老年");
		}
	*/
		// 再改进:
		String str = "老年";
		if(nianLing < 0 || nianLing > 150){
			System.out.println("非法信息, 请重新输入!");
			return;		// 终止程序, 后期会讲
		}else if(nianLing <= 5){
			str = "婴幼儿";
		}else if(nianLing <= 10){
			str = "少儿";
		}else if(nianLing <= 18){
			str = "少年";
		}else if (nianLing <= 35){
			str = "青年";
		}else if (nianLing <= 55){
			str = "中年";
		}
		System.out.println(str);
	}
}
  • 业务3:
/*
	业务3:
		1. 接收一个学生的考试成绩, 根据考试成绩输出成绩的等级.
		2. 等级:
			优:	[90-100]
			良:	[80-89]
			中:	[70-79]
			及格:	[60-69]
			不及格:	[0-59]
		3. 要求成绩是一个合法的数字, 成绩必须在[0-100]之间, 成绩可能带有小数.
*/
public class IfTest03{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入你的成绩: ");
		double chengJi = s.nextDouble();
		String str = "优";
		if (chengJi < 0 || chengJi > 100){
			System.out.println("非法数字, 请重新输入!");
			return;
		}else if (chengJi <= 59){
			str = "不及格";
		}else if (chengJi <= 69){
			str = "及格";
		}else if(chengJi <= 79){
			str = "中";
		}else if(chengJi <= 89){
			str = "良";
		}
		System.out.println(str);
	}
}
  • 业务4:
/*
	业务4:
		1. 接收天气的信息
			1 : 雨天
			0 : 晴天
		2. 接收性别的信息
			1 : 男
			0 : 女
		3. 要求:
			当天气是雨天时:
				女 : 打一把小花伞
				男 : 打一把大黑伞
			当天气时晴天时:
				女 : 擦点防晒霜, 出去玩耍
				男 : 直接走起, 出去玩耍

		4. 需要使用if语句以及嵌套方式展现这个业务.
*/
public class IfTest04{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.println("今天的天气如何: ");
		int tianQi = s.nextInt();
		System.out.print("请输入你的性别: ");
		int sex = s.nextInt();
		if (tianQi != 1 && tianQi != 0){
			System.out.println("错误");
		}else{
			if (tianQi == 1){
			
				if(sex == 0){
					System.out.println("打一把小花伞");
				}else if(sex == 1){
					System.out.println("打一把大黑伞");
				}
			}else {
				if(sex == 0){
					System.out.println("擦点防晒霜, 出去玩耍");
				}else if (sex == 1){
					System.out.println("直接走起, 出去玩耍");
				}
			}			
		}
		
	}
}

switch

  1. 语法格式:
switch(值){
case 值1:
	java语句;
	java语句...
	break;
case 值2:
	java语句;
	java语句...
	break;
case 值3:
	java语句;
	java语句...
	break;
default:
	java语句;
}

以上是一个完整的switch语句:
	其中: break和default不是必须的

switch语句支持的值有:
	支持int类型以及String类型( JDK8之后才开始支持String类型 ).
	本质上只支持这两个, 但是byte, short, char也可以使用, 因为它们可以自动类型转换.

switch中"值" 与 "值1", "值2"比较时会使用"=="进行比较.
  1. 执行原理:
"值" 与 "值1"进行比较, 如果相同, 则执行该分支中的java语句, 然后遇到break, switch结束.

如果不相等, 会继续将"值" 与 "值2" 进行比较, 如果相同, 则执行该分支中的Java语句, 遇到break结束.

注意:
	如果分支执行了, 但是分支最后执行了, 此时会发生case穿透现象
	switch(值){
	case 值1:
		java语句;
		java语句...
	case 值2:
		java语句;
		java语句...
		break;
	此时会发生case穿透现象( 值与值1相同, 执行Java语句, 然后不与值2比较, 直接执行下面的java语句 )

所有的case都没有执行, 则执行default语句.
  1. 实验:
	/*
		错误: 不兼容的类型: 从long转换为int可能有损失
		long x = 100L;
		switch(x){
		
		}
	*/

		byte b = 100;
		switch(b){
		
		}

		short s = 100;
		switch(s){
		
		}

		int i = 100;
		switch(i){
		
		}

		char c = 'a';
		switch(c){
		
		}

		String str = "stephen";
		switch(str){
		
		}
	}
}
  • 业务1:
/*
	写一个完整的switch语句:
			接收键盘输入, 根据输入的数字来判断星期几.
				1 星期一
				...
				7 星期天
*/
public class SwitchTest01{
	public static void main(String[] args){
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入1-7的整数: ");
		int num = s.nextInt();
		
		switch(num){
		case 1:
			System.out.println("星期一");
			break;
		case 2:
			System.out.println("星期二");
			break;
		case 3:
			System.out.println("星期三");
			break;
		case 4:
			System.out.println("星期四");
			break;
		case 5:
			System.out.println("星期五");
			break;
		case 6:
			System.out.println("星期六");
			break;
		case 7:
			System.out.println("星期天");
			break;
		default:
			System.out.println("输入错误, 请重新输入");
			break;
		}

		// 改善:
		/*
		switch(num){
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("weekday");
			break;
		case 6:
		case 7:
			System.out.println("weekend");
			break;
		default:
			System.out.println("输入错误, 请重新输入");
			break;
		}
		*/
	}
}
  • 业务2:
/*
	1. 接收一个学生的考试成绩, 根据考试成绩输出成绩的等级.
	2. 等级:
		优:	[90-100]
		良:	[80-89]
		中:	[70-79]
		及格:	[60-69]
		不及格:	[0-59]
	3. 要求成绩是一个合法的数字, 成绩必须在[0-100]之间, 成绩可能带有小数.
	4. 要求使用switch语句实现.
*/
public class SwitchTest02{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入你的成绩: ");
		double score = s.nextDouble();
		
		if( score > 100 || score < 0 ){
			System.out.println("输入错误, 请重新输入");
			return;
		}
		
		switch((int)(score / 10)){
		default:
			System.out.println("不及格");
			break;
		case 6:
			System.out.println("及格");
			break;
		case 7:
			System.out.println("中");
			break;
		case 8:
			System.out.println("良");
			break;
		case 9:
			System.out.println("优秀");
			break;
		}
		// 改善:
	/*
		String str = "";
		switch(grade){
		default:
			str = "不及格";
			break;
		case 6:
			str = "及格";
			break;
		case 7:
			str = "中";
			break;
		case 8:
			str = "良";
			break;
		case 9:
		case 10:
			str = "优秀";
			break;
		}
		System.out.println(str);
	*/
	}
}

3. 循环语句

  1. 为什么使用循环语句:
/*
		要求在控制台上输出100个100
		System.out.println(100);
		System.out.println(100);
		System.out.println(100);
		System.out.println(100);
		System.out.println(100);
		...
		这种方法有点复杂, 所以要使用循环语句来实现这个业务.
*/
public class ForTest01{
	public static void main(String[] args){
		
		int i = 0;
		int count = 0;	// 计算打印结果的个数
		for(i = 1; i <= 100; i++){
			System.out.println(100);
			count++;
		}
		System.out.println("count = " + count);
	}
}

for

  1. 语法格式:
for(初始化表达式; 布尔表达式; 更新表达式){
	循环体; // 由Java语句构成
}

注意:
	初始化表达式最先执行, 并且在整个循环中只执行一次

	条件表达式的结果必须是布尔类型.

	四个步骤都可省略.
  1. 执行原理:
依次执行:
	初始化
	布尔表达式
		为ture, 执行下面, 为false则跳出循环
	循环体
	更新
然后循环:
	布尔表达式
		为ture, 执行下面, 为false则跳出循环
	循环体
	更新
直到布尔表达式为false
  1. for循环常见使用方式:
public class ForTest02{
	public static void main(String[] args){
		
		// 最简练的for循环
		/*
			for(;;){
				System.out.println(1);
			}
		*/

		// 最常见的for循环
		// 一下循环中, int i = 0;只执行一次, i变量属于for循环中的局部变量, for循环结束之后, 
		// i的内存将被释放. i变量只能在for循环中使用.
		for (int i = 0; i <= 10; i++){
			System.out.println("i = " + i);		// 0 1 ... 10
		}
		
		// i变量的作用域就扩大了.
		int i = 0;
		for (i = 0; i <= 10; i++){
			System.out.println("i -> " + i);	// 0 1 ... 10
		}
		System.out.println(i);					// 11

		// 变形
		for (int k = 0; k <= 10;){
			System.out.println("k -> " + k);	// 0 1 ... 10
			k++;
		}

		// 再变形
		for (int k = 0; k <= 10;){
			k++;
			System.out.println("k -> " + k);	// 1 2 ... 11
		}
	}
}

public class ForTest03{
	public static void main(String[] args){
		// 变形
		for (int i = 10; i >= 0; i--){
			System.out.println("i = " + i);		// 10 9 ... 0
		}

		// 变形
		for (int i = 0; i <= 10; i += 2){
			System.out.println("i = " + i);		// 0 2 ... 10
		}

		// 变形
		for (int i = 1; i <= 10; i += 2){
			System.out.println("i = " + i);		// 1 3 ... 9
		}

		// 变形
		for (int i = 100; i >= 0; i %= 3){
			System.out.println("i = " + i);		// 100 1 1 1 1 ...
		}
	}
}
  • 业务1:
/*
	业务1:
		1. 使用for循环, 实现1-100所有奇数求和
		2. 至少给出两种解决方案
*/
public class ForTest04{
	public static void main(String[] args){
		int i = 0;
		int sum = 0;
		
		// 第一种
		for(i = 0; i <= 100; i++){
			if(i % 2 != 0){
				sum += i;
			}
		}
		System.out.println("sum = " + sum);		// 2500
		

		// 第二种
		/*
		for(i = 1; i <= 100; i += 2){
			sum += i;
		}
		System.out.println("sum = " + sum);
		*/
	}
}
  • 嵌套:
/*
	1. 所有合法的"控制语句"都可以嵌套使用
	2. for循环嵌套一个for循环的执行原理:
		for(){
			// 在分析最外层for循环时, 把里面的for循环当作一个普通的java语句
			for(){}
		}
*/
public class ForTest05{
	public static void main(String[] args){
		for(int i = 0; i < 2; i++){
			System.out.println("i = " + i);		// 循环2次
		}
		for(int j = 0; j < 10; j ++){
			System.out.println("j = " + j);		// 循环10次
		}

		System.out.println("------------------------");

		for(int i = 0; i < 2; i++){
			for(int j = 0; j < 10; j ++){
				System.out.println("j = " + j);
			}
		}
	}
}

在这里插入图片描述

for(int k = 0; k < 2; k++){
	for(int i = 0;i < 10; i++){
		System.out.println("k = " + k);		// 0 0 ... 0		1 1 ... 1
		System.out.println("i --> " + i);	// 0 1 ... 9		0 1 ... 9
	}
}

在这里插入图片描述

/*
		int i = 0;
		for(int k = 0; k < 2; k++){
			for(;i < 10; i++){
				System.out.println("k = " + k);		// 0 0 ... 0
				System.out.println("i --> " + i);	// 0 1 ... 9
			}
		}
*/

在这里插入图片描述

  • 业务2:
/*
	业务2:
		1. 九九乘法表

		1 * 1 = 1
		1 * 2 = 2	2 * 2 = 4
		1 * 3 = 3	2 * 3 = 6	3 * 3 = 9
		...
		1 * 9 = 9	2 * 9 = 18 ... 9 * 9 = 81

		2. 特点:
			共九行
			第一行一个, 第二行两个, 第n行n个
*/
public class ForTest06{
	public static void main(String[] args){
		int i = 0;
		for(i = 1; i < 10; i++){		// 9行, 循环9次, i是行号
			for(int j = 1; j <= i; j++){	// 负责输出一行
				System.out.print(j + " * " + i + " = " + (j * i) + "	");
			}
		System.out.println();
		}
	}
}

while

  1. 语法格式
while(布尔表达式){
	循环体;
}
  1. 执行原理
判断布尔表达式的结果, 如果为true执行循环体, 循环结束后, 再判断布尔表达式, 为true, 
执行循环体, 直到布尔表达式为false, 才终止循环.
  1. while循环执行的次数:
0~n次
  1. while和for本质上相同, 只不过语法格式不同.

do…while

  1. 语法结构:
do{
	循环体;
}while();
  1. 执行原理:
先执行一次循环体, 再判断布尔表达式, 为true则执行循环体, 为false则结束循环.
  1. 注意:
do...while循环最后不要忘了分号( 因为while后面没有结束功能的大括号, 所以要使用分号来结束 )
  1. do…while的循环次数:
1~n次
  • 常用使用方式:
public class DoWhileTest01{
	public static void main(String[] args){
		/*
		int i = 0;
		do{
			System.out.println("i = " + i);
			i++;
		}while(i <= 10);	// 0 1 ... 10
		*/

		// 变形
		/*
		int i = 0;
		do{
			System.out.println(i++);
		}while(i <= 10);	// 0 1 ... 10
		*/

		// 变形
		int i = 0;
		do{
			System.out.println(++i);
		}while(i <= 10);	// 1 2 ... 11

		do{
			System.out.println("Hello world");
		}while(false);
	}
}

4. 转向语句

break

  1. break语句比较特殊, 特殊在: break语句是一个单词成为了一个java语句
    continue也是如此
  2. break语句的使用位置:
    用于switch语句当中
    用于循环当中
  • 案例1:
public class BreakTest01{
	public static void main(String[] args){
		for(int i = 0; i <= 10; i++){
			if(i == 5){
				// break语句会让离它最近的循环终止.
				break;	// 针对的是离它最近的循环, 而不是这个if语句
			}
			System.out.println("i = " + i);		// 0 1 2 3 4
		}
		System.out.println("HelloWorld");	// break终止的是for循环, 与循环以外的语句无关, 所以这里的语句照常执行
	}
}
  • 案例2:
for(int j = 0; j < 2; j++){
	for(int i = 0; i <= 10; i++){
	if(i == 5){
		break;	// 针对的是离它最近的循环
	}
	System.out.println("i = " + i);		// 0 1 2 3 4	0 1 2 3 4
	}
}

continue

  1. continue要和break对比着学
  2. continue语句作用:
    终止当前本次循环, 直接进入更新表达式, 然后执行下一次循环.
  • 案例1:
public class ContinueTest01{
	public static void main(String[] args){
		for(int i = 0; i <= 10; i++){
			if(i == 5){
				break;
			}
			System.out.println("i = " + i);		// 0 1 2 3 4
		}
		System.out.println("--------------------");

		for(int i = 0; i <= 10; i++){
			if(i == 5){
				continue;	// 执行continue后, 这之后的语句将不会执行, 跳到i++, 然后执行下一次循环
			}
			System.out.println("i = " + i);		// 0 1 2 3 4 6 7 8 9 10 , 没有5
		}
	}
}

5. 章节练习

/*
	第一题:编写 java 程序,用循环结构打印如下的数值列表: 
			1 10 100 1000 
			2 20 200 2000 
			3 30 300 3000 
			4 40 400 4000
			5 50 500 5000 

	第二题:打印 2 到 10000 的所有素数,每行显示 8 个素数。 

	第三题:编写程序,计算 5 的阶乘。 

	第四题:控制台输入年龄,根据年龄输出不同的提示。 

	第五题:篮球从 5 米高的地方掉下来,每次弹起的高度是原来的 30%,经过几次弹起,篮球的高度是 0.1 米
*/
day08作业
1、根据指定月份,打印该月份所属的季节。
	3,4,5 春季 
	6,7,8 夏季 
	9,10,11 秋季 
	12, 1, 2 冬季

	if和switch各写一版

2、从键盘接收一个数字,判断该数字的正负。

3、从键盘接收一个数字,判断该数字的奇偶。

4、整数大小比较:输入两个整数,比较大小,
	若x>y 输出 >
	若x=y 输出 =
	若x<y 输出 <

5、编写程序,由键盘输入三个整数分别存入变量num1,num2,num3中,对它们进行排序,
使用if-else结构,并按从小到大的顺序输出

6、打车起步价8元(3KM以内)
超过3KM,超出的每公里1.2元
超过5KM,超出的每公里1.5元
请在键盘上接收公里数,得出总价。
day09作业
1、计算1000以内所有不能被7整除的整数之和

2、计算 1+2-3+4-5+6-7....+100的结果

3、从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 5*4*3*2*1

4、从控制台接收一个正整数,判断该数字是否为质数
质数(质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数)

5、从键盘接收一个正整数,该正整数作为行数,输出以下图形
    *
   ***
  *****
 *******
*********
例如:输入5,则打印如上图5行。

6、小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天
或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。

7、一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程
找出1000内所有的完数。

8、给一个不多于5位的正整数,
要求:
一、求它是几位数
二、逆序打印出各位数字
day10作业
1、题目:一个5位数,判断它是不是回文数。即12321是回文数,
个位与万位相同,十位与千位相同

2、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,
还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了
一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上
想再吃时,只剩下一个桃子了。求第一天共摘了多少

3、题目:计算 1! + 2! + 3! + 4! +... + 10!
	说明:4! 表示4的阶乘。4的阶乘是:1 * 2 * 3 * 4

4、题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半再落下,
求它在第10次落地时,共经过多少米

5、一个四位数,恰好等于去掉它的首位数字之后所剩的三位数的3倍,这个
四位数是多少?
day11作业

1、编写一个方法,求整数n的阶乘,例如5的阶乘是1*2*3*4*5
思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。

2、编写一个方法,输出大于某个正整数n的最小的质数。
思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。

3、画出以下程序运行过程的内存图

public class Test{
	public static void main(String[] args){
		int a = 100;
		int b = 200;
		int retValue = m1(a, b);
		System.out.println(retValue);
	}
	public static int m1(int x, int y){
		int k = x * 10;
		int m = y * 10;
		int result = m2(k, m);
		return result;
	}
	public static int m2(int c, int d){
		int e = c / 2;
		int f = d / 2;
		int i = e + f;
		return i;
	}
}

6. 习题答案



// 第二题:打印 2 到 1000 的所有素数,每行显示 8 个素数
		// 素数: 除了1和它本身以外不再有其它因数
/*
		第一步: 取出2到1000之间的正整数i
		第二步: 再取出2到i-1之间的正整数j
		第三步: 试除( 将i除以j, 如果可以整除则该数不是质数 )
		第四步: 2到i-1的数都试除后, 发现都不能整除, 此时的j和i相等, 则i为质数
*/
		int i = 0;
		int num = 0;
		for(i = 2; i <= 1000; i++){
			int j = 2;
			for(; j <= i - 1; j++){
				if(i % j == 0){
					break;
				}
			}
			
			if(i == j){
				num++;
				System.out.print(i + " ");
				if(num % 8 == 0){
					System.out.println();
				}
			}
		}

// 第三题:编写程序,计算 5 的阶乘
/*
	int i = 0;
	int jieCheng = 1;
	for(i = 1; i <= 5; i++){
		jieCheng *= i;	
	}
	System.out.println(jieCheng);	// 120
*/

// 第四题:控制台输入年龄,根据年龄输出不同的提示.
/*
	java.util.Scanner s = new java.util.Scanner(System.in);
	System.out.print("请输入你的成绩: ");
	double score = s.nextDouble();
	
	if( score > 100 || score < 0 ){
		System.out.println("输入错误, 请重新输入");
		return;
	}
	int grade = (int)(score / 10);
	String str = "";
	switch(grade){
	default:
		str = "不及格";
		break;
	case 6:
		str = "及格";
		break;
	case 7:
		str = "中";
		break;
	case 8:
		str = "良";
		break;
	case 9:
	case 10:
		str = "优秀";
		break;
	}
	System.out.println(str);
*/

// 第五题:篮球从 5 米高的地方掉下来,每次弹起的高度是原来的 30%,经过几次弹起,篮球的高度是 0.1 米
	/*
		double height = 5.0;
		int count = 0;
		for(; height > 0.1; count++){
			height *= 0.3;
		}
		System.out.println(count);
	*/
	}
}

day08
/*	
	1. 方法一if:
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入一个月份: ");
		int month = s.nextInt();

		String str = "春季";
		if(month > 12 || month < 1){
			System.out.println("输入错误");
			return;
		}else if(month == 12 || month <= 2){
			str = "冬季";
		}else if(month >= 9){
			str = "秋季";
		}else if(month >= 6){
			str = "夏季";
		}
		System.out.println(str);
	*/
	/*	
	方法二switch:
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入一个月份: ");
		int month = s.nextInt();
		String str = "输入错误";
		
		if(month >= 1 && month <=12){
			switch(month){
				case 3:
				case 4:
				case 5:
					str = "春季";
					break;
				case 6:
				case 7:
				case 8:
					str = "夏季";
					break;
				case 9:
				case 10:
				case 11:
					str = "秋季";
					break;
				default:
					str = "冬季";
			}
		}
		System.out.println(str);
	*/
	/*
	2. 
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入一个数字: ");
		double num = s.nextDouble();
		String str = "负";

		if(num > 0){
			str = "正";
		}else if(num == 0){
			str = "非正非负";
		}
		System.out.println(str);
	*/
	/*
	3.
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入一个数字: ");
		int num = s.nextInt();
		if(num % 2 == 0){
			System.out.println("偶数");
		}else {
			System.out.println("奇数");
		}
	*/
	/*
	4.
	
		java.util.Scanner s1 = new java.util.Scanner(System.in);
		java.util.Scanner s2 = new java.util.Scanner(System.in);
		System.out.print("请输入两个数字: ");
		int x = s1.nextInt();
		int y = s2.nextInt();
		String str = "=";

		if(x > y){
			str = ">";
		}else if(x < y){
			str = "<";
		}
		System.out.println(str);
	*/
	/*
	5.
	
		java.util.Scanner s1 = new java.util.Scanner(System.in);
		java.util.Scanner s2 = new java.util.Scanner(System.in);
		java.util.Scanner s3 = new java.util.Scanner(System.in);
		System.out.print("请输入三个数字: ");
		int num1 = s1.nextInt();
		int num2 = s2.nextInt();
		int num3 = s3.nextInt();
		int tmp = 0;

		if(num1 > num2){
			tmp = num2;
			num2 = num1;
			num1 = tmp;
		}
		if(num1 > num3){
			tmp = num3;
			num3 = num1;
			num1 = tmp;
		}
		if(num2 > num3){
			tmp = num3;
			num3 = num2;
			num2 = tmp;
		}
		System.out.println("小" + num1 + ",中" + num2 + ",大" + num3);
	*/
	/*
	6.
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入公里数: ");
		double km = s.nextDouble();
		double price = 8;
		if(km > 5){
			price = 8 + 1.2 * 2 + (km - 5) * 1.5;
		}else if(km > 3){
			price = 8 + (km - 3) * 1.2;
		}
		System.out.println(price);
	*/
day09
//1、计算1000以内所有不能被7整除的整数之和
		/*
			int i = 0;
			int sum = 0;	// sum变量, 用于存储求和的结果
			// 循环时想for, while, do...while
			for(i = 0; i <= 1000; i++){		// 第一步
				// 判断时想if, switch
				if(i % 7 != 0){		// 第二步, 此时的i是不能被7整除的, 此时这个i应该纳入求和
					sum += i;	// 第三步, 求和
				}
			}
			// 在for循环结束之后, 结果计算才完成, 所以在这里输出
			System.out.println("sum = " + sum);
		*/
		
			//2、计算 1+2-3+4-5+6-7....+100的结果
		/*
			// 方法二:
			int i = 0;
			int j = 0;
			int sum1 = 0;
			int sum2 = 0;
			for(i = 2; i <= 100; i += 2){
				sum1 += i;
			}
			for(j = 3; j <= 100; j += 2){
				sum2 += j;
			}
			System.out.println(sum1 - sum2 + 1);	// +1是题目要求
		*/
		/*
			// 方法一:
			int i = 0;
			int sum = 1;	// sum的初始值是1而不是0
			for(i = 2; i <= 100; i++){		// i从2开始

				if(i % 2 != 0){		// 奇数-
					sum -= i;
				}else {		// 偶数+
					sum += i;
				}
				
			}
			System.out.println(sum);
		*/

		
			// 3、从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 5*4*3*2*1
		/*
			java.util.Scanner s = new java.util.Scanner(System.in);
			System.out.print("请输入一个正整数: ");

			int i = s.nextInt();
			int jieCheng = 1;		// 初始值不能为0, 否则乘积就为0了
			for(int j = 1; j <= i; j++){
				jieCheng *= j;
			}
			System.out.println(jieCheng);
		*/	
		
			// 4、从控制台接收一个正整数,判断该数字是否为质数
			// 质数(质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数)
			
			// 第一步: 接收一个正整数
			// 第二步: 取出从2开始到该正整数的自然数
			// 第三步: 让该正整数对这些自然数( 大于等于2, 小于该正整数 )取模, 判断该结果是否为0, 如果为0, 则直接跳出循环
			// 第四步: 当这些自然数都试除完之后, 此时的自然数经过循环后的调整++后, 与该正整数相等了, 则该数为质数

			java.util.Scanner s = new java.util.Scanner(System.in);
			System.out.println("请输入一个正整数: ");	//	第一步

			// 方法一:
		/*
			int i = s.nextInt();
			int j = 0;
			for(j = 2; j < i; j++){		// 第二步
				if(i % j == 0){			// 第三步
					System.out.println("该数不是质数");
					break;		// 为了效率, 这里要终止循环
				}
			}
			if(i == j){					// 第四步
				System.out.println("该数是质数");
			}
		*/

			// 方法二( 主要练习打布尔标记 ):
		/*
			int i = s.nextInt();
			int j = 0;

			// 准备一个布尔类型的标记
			boolean zhiShu = true;		// true表示质数

			for(j = 2; j < i; j++){
				if(i % j == 0){
					zhiShu = false;		// false表示不是质数
					break;		// 为了效率, 这里要终止循环
				}
			}	
			System.out.println(i + (zhiShu ? "是" : "不是") + "质数");	// 三目运算符, 判断布尔类型标记是否为质数
		*/	

			// 5、从键盘接收一个正整数,该正整数作为行数,输出以下图形
			//	  *
			//   ***
			//  *****
			// *******
			//*********
			// 例如:输入5,则打印如上图5行。

			// 第一步: 接收一个正整数
			// 第二步: 外层循环控制行号
			// 第三步: 内层循环1控制空格( 2n-1 )
			// 第四步: 内层循环2控制星号( 总行数-行号 )
			// 第五步: 一行结束后, 要执行换行

				// 控制空格
				// 第一行是一个
				// 第二行是三个
				// 第三行是五个
				// 第n行是2n-1个

				// 控制星号
				// 第一行是四个(5-1)
				// 第二行是三个(5-2)
				// 第三行是二个(5-3)
				// 第四行是一个(5-4)
				// 第五行是0个(5-5)
				// 第n行是总行数-行号
 
		/*
			java.util.Scanner s = new java.util.Scanner(System.in);
			System.out.println("请输入一个正整数( 作为行号, 输出图形 ): ");

			int rows = s.nextInt();

			// 6行循环6次
			// n行循环n次
			for(int i = 0; i < rows; i++){		// 外层循环控制的是总行数
				// 在这里需要将一行全部输出
				// 这里需要再次使用循环, 输出空格以及"*"	// 内层循环控制的是内容


				// 控制空格
				for(int j = 0; j < rows - i; j++){
					System.out.print(" ");
				}

				// 控制星号
				for(int k = 0; k < (2 * i - 1); k++){
					System.out.print("*");
				}

				// 以上两个for循环都结束之后, 表示一行就结束了
				// 在这里换行
				System.out.println();
			}
		*/

			//6、小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天
			//或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。
		/*
			double i = 0;
			int day = 0;
			

			while(i < 100){
				i += 2.5;
				day++;
				if(day % 5 == 0){
					i -= 6;
				}
			}
			if(i >= 100){
				System.out.println("第" + day + "天, " + "存到了" + i + "元");
			}
		*/
		
			// 7、一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程
			// 找出1000内所有的完数。

			// 第一步: 取出1到1000之间的所有整数
			// 第二步: 判断该数是否为完数
			// 第三步: 找到该数的因子
			// 第四步: 如果等于该数, 则是完数, 否则不是完数
		/*
			int i = 0;
			int j = 0;
			
			for(i = 2; i <= 1000; i++){		// 第一步

			// 第二步: 判断i是否为完数

			// 第三步: 找到该数的因子
				int sum = 0;
				for(j = 1; j <= i / 2; j++){
					if(i % j == 0){
						// 此时的j就是因子
						sum += j;
					}
				}
				if(i == sum){
					System.out.println(i);
				}
				
			}
		*/
		
			// 8、给一个不多于5位的正整数,
			// 要求:
			// 一、求它是几位数
			// 二、逆序打印出各位数字
		/*
			java.util.Scanner s = new java.util.Scanner(System.in);
			System.out.print("请输入一个不小于5位的正整数: ");

			int i = s.nextInt(); 
			int weiShu = 0;
			for(; i != 0; i /= 10){
				weiShu++;
				System.out.print((i % 10));		// 逆序打印
			}
			if(i == 0){
				System.out.println();
				System.out.println("这个数是" + weiShu + "位数");
			}
		*/
day10
/*
	1.
	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入一个五位的正整数 ");
		int num = s.nextInt();
		for(int i = 1; i <= 4; i++){
			num /= 10;
			int yuShu = num % 10;
		}
	
		int x = 12321;
		int a = 0, b = 0;
        int c = x;
        while (c!=0)
        {
            a = c % 10;
            b = b * 10 + a;
            c = c / 10;
        }
        if(b==x){
            System.out.print("是回文数");
        }else{
            System.out.print("不是回文数");
        }
	*/
	/*
	2.
	
		int day = 1;
		int num = 900;
		for(num = 900; num <= 5000; num++){
			for(day = 1; day <= 10; day++){
				num = num / 2 - 1;
				if(day == 10 && num == 1){
					System.out.println(num);
				}
			}
		}
	*/
	/*
		int num = 1;
		int day = 10;
		System.out.println("第" + day + "天有桃子:" + num);
		for (day = 9; day >= 1; day--) {
			num = 2 * (num + 1);
			System.out.println("第" + day + "天有桃子:" + num);
		}
		System.out.println("猴子在第1天摘了" + num + "个桃子");
	*/

	/*
	3.
	
		int i = 1;
		int jieCheng = 1;
		int sum = 0;
		for(i = 1; i <= 10; i++){
			jieCheng *= i;
			sum += jieCheng;
		}
		System.out.println(sum);
	*/
	/*
	4.
	
		int i = 1;
		int height = 100;
		int sum = 0;
		for(i = 1; i <= 10; i++){
			sum += height;
			height /= 2;
		}
		System.out.println(sum);
	*/
	/*
	5.
	
		int i = 1000;
		for(i = 1000; i <= 9999; i++){
			if(i == i % 1000 * 3){
				System.out.println(i + " ");
			}
		}
	*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值