01Java基础:分支结构和循环结构

Java中的分支结构和循环结构作业

1.知识准备:Scanner用法
1.1注意

Java 中的扫描器,使用流程,请复制粘贴使用,选择合适的套餐

1.public class 类名之上导包 ==> 点技能点
	import java.util.Scanner;
2. 代码中准备 Scanner 变量,以备使用
	Scanner sc = new Scanner(System.in);
3. 根据所需,选取对应的套餐,复制粘贴解决问题!!!
	int类型数据
		int类型变量 = sc.nextInt();
	float类型数据	
    	float类型变量 = sc.nextFloat();
	double类型数据		
		double类型变量 = sc.nextDouble();
	char类型数据	
        char类型变量 = sc.nextLine().charAt(0);
1.2【补充知识】

用户操作友好提示/操作引导提示

用户使用软件,需要在操作过程中,给予用户合理,合情,合适,友好的提示内容,方便用户使用我们的软件增强用户粘性!!!

1.3【补充知识】

用户输入数据合法性判断

在实际开发中:

用户提交数据需要根据实际情况来进行合法性判断,如果不合法,不可以进入正常的数据判断处理过程,中断程序运行,给予用户提示。

举个例子:

//  if else-if 分支结构代码结构演示
/*
超市
	消费满 100 ~ 200 元, 送绿箭
	消费满 200 ~ 500 元, 送啤酒一瓶
	消费满 500 ~ 1000 元, 送牛奶一箱
	消费满 1000 ~ 2000 元, 送 199 零食大礼包
	消费超 2000 元,送店
*/
import java.util.Scanner;

public class Demo7 {
	public static void main(String[] args) {
		int totalPrice = 0;
		Scanner sc = new Scanner(System.in);
		
		// 用户操作友好性提示
		System.out.println("请输入您的消费金额:");
		totalPrice = sc.nextInt();
		
		// 用户输入数据之后,判断用户提供的数据是否合法
		if (totalPrice <= 0) {
			// 给予用户友好提示
			System.out.println("亲,请输入正确的金额呦");
			// 中断代码运行 直接关闭程序,俗称拉闸!!!后期不要使用!!
			System.exit(0);
		}
		
		// 消费金额递增
		if (totalPrice >= 100 && totalPrice < 200) {
			System.out.println("尊贵的客户,送您一片绿箭");
		} else if (totalPrice >= 200 && totalPrice < 500) {
			System.out.println("尊贵的客户,送您一瓶崂山啤酒");
		} else if (totalPrice >= 500 && totalPrice < 1000) {
			System.out.println("尊贵的客户,送您一箱特仑苏");
		} else if (totalPrice >= 1000 && totalPrice < 2000) {
			System.out.println("尊贵的客户,送您 199 零食大礼包");
		} else if (totalPrice >= 2000) {
			System.out.println("尊贵的客户,店铺都送您!!!");
		}
		
		System.out.println();
		
		/* 
		消费金额递减
		对比上方的条件,递减方式
			1. if 之后条件内容没有逻辑与判断,效率高
			2. 代码量降低
			3. 分析条件的罗列关系
		*/
		if (totalPrice >= 2000) {
			System.out.println("尊贵的客户,店铺都送您!!!");
		} else if (totalPrice >= 1000) {
			System.out.println("尊贵的客户,送您 199 零食大礼包");
		} else if (totalPrice >= 500) {
			System.out.println("尊贵的客户,送您一箱特仑苏");
		} else if (totalPrice >= 200) {
			System.out.println("尊贵的客户,送您一瓶崂山啤酒");
		} else if (totalPrice >= 100) {
			System.out.println("尊贵的客户,送您一片绿箭");
		} else {
			System.out.println("尊贵的客户,送您一个塑料袋");
		}
	}
}
2.循环结构
2.1 为什么要用循环结构

代码中容易出现重复,复用代码,如果仅通过最为基础的Ctrl键+ CV 操作,会导致以下问题

1.代码冗余性

2.代码阅读性极差

3.代码维护性极差
2.2 while 循环结构
格式
while (/* 循环条件判断 boolean true or false */) {
    // 循环体;
    // (循环条件变更如:i++);
}
/*
执行流程:
	代码执行 while 循环结构,首先判断 while 之后小括号中的循环条件是否为 true ,如果为 true 执行循环体,回到 while 之后小括号判断,直到循环条件为 false 终止循环!!!
*/
// while 循环结构演示
public class Demo3 {
	public static void main(String[] args) {
		// int 类型变量控制循环次数
		int num = 1;
		
		// while 小括号中,循环条件必须是一个 boolean 类型
		// 无限循环解决方式: Ctrl + C
		while (num <= 10) {
			System.out.println("老师请我们每一个老师吃烤全羊");
			num += 1; // or num++; or ++num;
		} 
	}
}
2.3 do while 循环结构
// 格式
// 注意 结尾的分号,必须要有!!!
do {
    // 循环体
    // (循环条件变更)
} while (/* 循环条件判断 boolean true or false */);
/*
执行流程:
	代码执行 do while 循环结构,首先执行一次循环体内容,再来判断 while 之后小括号中循环判断条件是否为 true,如果为 true 继续执行循环体,如果为 false 终止循环。
*/
// do while 循环结构
public class Demo4 {
	public static void main(String[] args) {
		// num 就可以认为是循环变量
		int num = 1;
		
		do {
			System.out.println("老黑请我们吃烤全羊");
			num += 1; // num++ or ++num 控制循环变量
		} while (num <= 10);
	}
}
2.4 for 循环结构【重点】
// 格式
for (/* 循环条件初始化 */; /* 循环条件判断 */; /* 循环条件变更 */) {
    // 循环体
}

在这里插入图片描述
for 循环结构流程

// for 循环结构演示
public class Demo5 {
	public static void main(String[] args) {
		/*
		常用的 for 循环方式
		for 循环小括号中的不同条件使用 ; 分割
		目前的 for 循环,循环次数 10 次
			i 的值在循环过程的变化 0 1 2 3 4 5 6 7 8 9
		*/
		for (int i = 0; i < 10; i++) {
			System.out.println("烤羊背");
		}
	}
}
循环第一次
	i = 0; 0 < 10 成立,循环可以执行
	i++; ==> i = 1
	
循环第二次
	i = 1; 1 < 10 成立,循环可以执行
	i++; ==> i = 2
	
循环第三次
	i = 2; 2 < 10 成立,循环可以执行
	i++; ==> i = 3
	
循环第四次
	i = 3; 3 < 10 成立,循环可以执行
	i++; ==> i = 4
	
循环第五次
	i = 4; 4 < 10 成立,循环可以执行
	i++; ==> i = 5
	
循环第六次
	i = 5; 5 < 10 成立,循环可以执行
	i++; ==> i = 6
	
循环第七次
	i = 6; 6 < 10 成立,循环可以执行
	i++; ==> i = 7
	
循环第八次
	i = 7; 7 < 10 成立,循环可以执行
	i++; ==> i = 8
	
循环第九次
	i = 8; 8 < 10 成立,循环可以执行
	i++; ==> i = 9
	
循环第十次
	i = 9; 9 < 10 成立,循环可以执行
	i++; ==> i = 10
	
循环第十一次:
	i = 10; 10 < 10 不成立,循环终止!!!
3. 作业

1. 用户输入一个年份,判断这个年份是不是一个闰年
2. 输入两个整数,打印两数之差的绝对值。
3. 多种方法打印26个小写字母
4. 例如:
	输入 5  8;
	计算 5 + 6 + 7 + 8;
	输出 26.
5. 整数逆序输出, 例如输入一个整数12345,输出5 4 3 2 1
6. 1 - 3 + 5 - 7 + 9 - 11 ... - 99 + 101 的结果
7. 15的阶乘
8. 
   *****
   *****
   *****
   *****
   *****
9.
  *
  **
  ***
  ****
  *****
10.   
      *
     ***
    *****
   *******
  *********
11.【拔高题】
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
4.代码
/*

1. 用户输入一个年份,判断这个年份是不是一个闰年
判断是否为闰年: 能被4整除,但不能被100整除;或者可以被400整除

*/
import java.util.Scanner;
public class HomeWorlk1 {
	public static void main(String[] args) {
		//定义变量
		int year = 0;
		Scanner sc = new Scanner(System.in);
		
		//用户友好性输入提示
		System.out.println("请输入一个年份:");
		year = sc.nextInt();
		
		//用户输入数据合法性判断
        if (year > 9999 || year <= 0) {
        System.out.println("你输入的数据有误~~~");
		System.exit(0);
        }
		
		//数据处理模块
		if (year % 4 == 0 && year % 100 !=0 || year % 400 ==0) {
		System.out.println("你提供的年份是闰年");
		} else {
		System.out.println("你提供的年份不是闰年");	
		}
	}
} 
/*

2. 输入两个整数,打印两数之差的绝对值。

*/
import java.util.Scanner;
public class HomeWorlk2 {
	public static void main(String[] args) {
		//定义变量
		int num1 = 0;
		int num2 = 0;
		Scanner sc = new Scanner(System.in);
		
		//用户友好性输入提示
		System.out.println("请输入二个数字:");
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		
		//用户输入数据合法性判断
        if (num1 < 0 || num2 < 0 ) {
			System.out.println("你输入的数据有误~~~");
			System.exit(0);
		}
		
		//数据处理模块 三元运算符处理 if...处理
		int ret = num1 > num2 ? num1 - num2 : num2 - num1;
		System.out.println(ret);
		
		if (num1 > num2) {
			System.out.println(num1-num2);
		} else {
			System.out.println(-(num1-num2));
		}
    }
}
/*

3. 多种方法打印26个小写字母
三种方法都可打印 记住它们对应的语句格式

*/
public class HomeWorlk3 {
	public static void main(String[] args) {
		char ch = 'a';
	
		while (ch <= 'z') {
			System.out.println(ch);
			ch++;
			/*
			ch = ch + 1;【错误】 因为 1+ch ==> 被计算机当做是一个int类型来处理
			数据类型没有一致化处理。
		
			ch += 1;【正确】+=会将int类型数据自动转换为char类型数据,赋值给变量ch
		
			ch++ 【正确选择】
		
			*/
		}
		
		char h = 'a';
	
		do {
			System.out.println(h);
			h += 1;
		} while (h <= 'z');
			
		for (char c = 'a'; c <= 'z'; c++) {
			System.out.println(c);
		}
	
	}
	
}

/*

4. 例如:
	输入 5  8;
	计算 5 + 6 + 7 + 8;
	输出 26.
利用等差数列前n项和

*/
import java.util.Scanner;
public class HomeWorlk4 {
	public static void main(String[] args) {
		//定义变量
		int num1 = 0;
		int num2 = 0;
		Scanner sc = new Scanner(System.in);
		
		//用户友好性输入提示
		System.out.println("请输入二个数字:");
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		
		//用户输入数据合法性判断
        if (num1 < 0 || num2 < 0 ) {
			System.out.println("你输入的数据有误~~~");
			System.exit(0);
		}
		
		//数据展示模块
		if (num1 > num2) {
			int ret1 = (num1 + num2) * (num1 - num2 + 1) / 2;
			System.out.println(ret1);
		} else {
			int ret2 = (num1 + num2) * (num2 - num1 + 1) / 2;
			System.out.println(ret2);
		}
		
	}
}
/*

5. 整数逆序输出, 例如输入一个整数12345,输出5 4 3 2 1

*/
import java.util.Scanner;
public class HomeWorlk5 {
	public static void main(String[] args) {
		//定义变量
		int num = 0;
		Scanner sc = new Scanner(System.in);
		
		//用户友好性输入提示
		System.out.println("请输入一个数字:");
		num = sc.nextInt();
		
		//用户输入数据合法性判断
        if (num < 0 ) {
			System.out.println("你输入的数据有误~~~");
			System.exit(0);
		}
		
		for (int i = num; i > 0; i /= 10) {
			System.out.println(i % 10);
		}
				
	}
}

/*

6. 1 - 3 + 5 - 7 + 9 - 11 ... - 99 + 101 的结果

方法一:找出规律 两个相近的和为-2 共计25组
方法二:定义变量 利用for循环进行实现

*/

public class HomeWorlk6 {
	public static void main(String[] args) {
		int ret = 101 - 25 * 2;
		System.out.println(ret);
		
		int i = 1;
		int j = 1;
		int sum = 0;
		
		for (i = 1; i <= 101; i +=2) {
			sum = sum + i * j;
			j = -j; //改变符号
		}
		System.out.println(sum);
	}
}
/*

7. 15的阶乘
【注意】数据类型范围
int 类型支持的最大阶乘 12
long 类型支持的最大阶乘 20
float类型支持的最大阶乘 34
double 类型支持的最大阶乘 170

如果采用 int 数据类型 会导致数据存储异常
数据结果已经超出 int 的数据类型范围

*/
public class HomeWorlk7 {
	public static void main(String[] args) {
		double sum = 1;
		
		for (int i = 1; i <= 15; i++) {
			sum = sum * i;
			System.out.println(sum);
		}
		System.out.println(sum);
	}
	
}
/*

8. 
             行(line)   星数*
   *****         1        5
   *****         2        5
   *****         3        5
   *****         4        5
   *****         5        5

*/
public class HomeWorlk8 {
	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			System.out.println("*****");
		}
		System.out.println("=========");
		
		
		/* for-i外层循环 控制图形的总行数 */
		for (int i = 1; i <= 5; i++) {
			/* 每一次循环都是一行内容 每一行内容都是五个 * 符号 */
			for (int j = 1; j <= 5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
}
/*

9.
            行数      星数
  *           1         1
  **          2         2
  ***         3         3
  ****        4         4
  *****       5         5
 【行号 == * 个数】
 
*/
public class HomeWorlk9 {
	public static void main(String[] args) {
		//for-i 仅控制循环 5 次 同时 i 可以换成int line = 初始值
		for (int i = 1; i <= 5; i++) {
			/*
			i 对应行号,也就是当前循环进入的第几行
			可以用于控制每一行的 * 号数目
			*/
			for (int j = 1; j <= i; j++) {
				System.out.print('*');
			}
			System.out.println(' ');
		}
	}
}
/*

10.           行数    空格数   星数
      *         1       4        1
     ***        2       3        3
    *****       3       2        5
   *******      4       1        7
  *********     5       0        9
分析:

当前控制行数用变量 i 来表示
空格数 总行数(5) - 当前行数(i)
星数 当前行数 i*2 - 1 
*/
public class HomeWorlk10 {	
	public static void main(String[] args) {
		// for-i 循环控制行数  一共是5行
		for (int i = 1; i <= 5; i++) {
			//内部模块 1 处理空格数 5为总行数 i为当前第几行
			for (int j = 1; j <= 5 - i; j++ ) {
				System.out.print(' ');
			}	
			//内部模块 2 处理 * 符号 当前第几行 (i) *2 -1
			for (int k = 1; k <= i * 2 - 1; k++) {
				System.out.print('*');	
			}
			System.out.println();	
		}
			
	}
}

/*
11
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
    
*/

public class HomeWorlk11 {
	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5 - i; j++) {
				System.out.print(' ');
			}
			for (int k = 1 ; k <= 2 * i - 1; k++) {
				System.out.print('*');
			} 
				System.out.println(); // 和题目10代码一样
		}	
			
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(' ');
			}
			for (int k = 1 ; k <= 2 * (5 - i) - 1; k++) {
				System.out.print('*');
			} 
				System.out.println(); // 找规律打印下面四行星数
		}		
	}
} 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值