1 分支结构
1.1 概述
顺序结构的程序虽然能解决计算、输出等问题
但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构
1.2 形式
举例: 商品打折案例
需求: 接收用户输入的原价。满1000打9折;满2000打8折;满5000打5折 ,满10000打1折
package cn.tedu.basic;
import java.util.Scanner;
/**需求:接收用户输入的原价,满1000打9折,满2000打8折,满5000打5折*/
public class TestDiscount {
public static void main(String[] args) {
//1.提示用户输入原价
System.out.println("请输入商品原价:");
//2.接收用户输入的原价
double price = new Scanner(System.in).nextDouble();
//3.计算打折后的价格
//3.1定义变量用来保存打折后的价格
double count = price;//初始值是商品的原价
//3.2判断用户的打折段位并打折
if(price >= 5000) {//满5000 //这里注意大价格放前面
count = price *0.5; //打5折
}else if(price >= 2000) {//满2000
count = price * 0.8; //打折8折
}else if(price >= 1000) {//满1000
count = price *0.9; //打9折
}
// 第二种写法
// if(1000 <= price && price< 2000) {
// count = price *0.9;
// }else if(2000 <= price && price < 5000) {
// count = price * 0.8;
// }else if(price >= 5000) {
// count = price *0.5;
// }
//3.3输出用户实际支付的价格
System.out.println("您实际应该支付:"+count);
}
}
2 switch结构
2.1 概述
switch case 语句用来判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束或者遇到break程序才结束
★★★★★ switch结构的注意事项 ★★★★★
1) ★★switch 语句中的变量类型可以是: byte、short、int 、char、String(jdk1.5以后支持)
2) switch 语句可以拥有多个 case 语句
3) 每个 case 后面跟一个要比较的值 和 冒号, ★★且此值的数据类型必须与变量的数据类型一致
4) 当变量值与 case 语句值相等时,开始执行此case 语句的内容,★执行完会判断此行代码是否有break,如果有,结束执行,★★如果没有,会继续向后执行穿透所有case,★包括default
5) switch 语句可以包含一个 default 分支,该分支一般是 写在switch 语句的最后
6) 如果在default 之前的 case 有 break, 则default不会执行
2.3 形式
举例: 案例
/**
* 本类用于练习switch结构
*/
public class TestSwitch {
public static void main(String[] args) {
//变量形式
System.out.println("请输入一个数:");
int a = new Scanner(System.in).nextInt();
/**总结1:变量a的类型支持byte short char int String*/
/**总结2:break表示结束当前的case,如果不加break,会向后穿透所有的case,包含default*/
switch(a) {
case 1:System.out.println(1);break;
case 2:System.out.println(2);break;
case 3:System.out.println(3);break;
case 4:System.out.println(4);break;
case 5:System.out.println(5);break;
/**总结3:default是一个"保底选项",可加可不加
* default是如果没有匹配到任何case时执行的默认选项,
* 如果在default之前遇到了break,default不会执行*/
default : System.out.println(6);
}
//字符形式
String s = "Monday";
switch(s){
case "Monday":System.out.println("星期一吃萝卜");break;
case "Tuesday":System.out.println("星期二吃白菜");break;
case "Wednesday":System.out.println("星期三吃虾米");break;
case "Thursday":System.out.println("星期四吃牛肉");break;
case "Friday":System.out.println("星期五吃鸡肉");break;
case "Saturday":System.out.println("星期六吃猪肉");break;
case "Sunday":System.out.println("星期天吃鱼");break;
default:System.out.println("想吃啥就吃啥!");
}
}
}
3 循环结构
3.1 for概述
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。
它由循环体中的条件,判断继续执行某个功能还是退出循环。
根据判断条件,循环结构又可细分为先判断后执行的循环结构和先执行后判断的循环结构。
3.2 for形式
3.3 for循环执行顺序
举例: 案例
/**
* 本类用于测试for循环结构
*/
public class TestFor {
public static void main(String[] args) {
//m0();//调用m0方法
//m1();//调用m1方法
//m2();
m3();
}
public static void m1() {
//需求4:求[1,100]所有数的总和
//从哪开始:1
//到哪结束:100
//如何变化:
int sum=0;
for(int i=1;i<=100;i++) {
sum+=i;
}
System.out.println(sum);
}
//★
public static void m2() {
//需求5:求[1,100]所有偶数的总和
//从哪开始:1
//到哪结束:100
//如何变化:
int sum =0;
for(int i=1;i<=100;i++) {
//
if(i % 2 ==0) {
sum = sum + i;
}
}
System.out.println(sum);
}
public static void m3() {
int count = 0;
for(int i=1;i<=100;i++) {
if(i%2==0) {
count++;
}
}
System.out.println(count);
}
public static void m0() {
//需求1:打印1-10
/**for(开始条件;循环条件;更改条件){循环体}*/
// 1 2 3 4 5 6 7 8 9 10
//从哪开始:1
//到哪结束:10
//如何变化:+1 ++
for(int i=1;i<=10;i++) {
System.out.println(i);
}
System.out.println("**************");
//需求2:打印10-1
//10 9 8 7 6 5 4 3 2 1
//从哪开始:10
//到哪结束:1
//如何变化:-1 --
for(int i=10;i>=0;i--) {
System.out.println(i);
}
//需求3:打印8,88,888,8888
//从哪开始:8
//到哪结束:8888
//如何变化:*10+8
for(int i=8;i<=8888;i=i*10+8) {
System.out.print(i+",");
}
}
}
-----------------------------------------------------
//1*1=1
//1*2=2 2*2=4
//1*3=3 2*3=6 3*3=9
//1*4=4 2*4=8 3*4=12 4*4=16
//1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
//1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
//1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
//1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
//1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
public class TestFor99Excel {
public static void main(String[] args) {
//★
for(int i=1;i<10;i++) {
for(int j=1;j<=i;j++) {
/**拼接打印的算是,后面加了一个"\t" ,表示这是表格格式,\t也被称作为制表符*/
System.out.print(j+"*"+i+"="+i*j+'\t');
}
System.out.println();
}
}
}
-----------------------------------------------------
/**
* 本类用于测试嵌套for循环
*/
public class TestForDemo {
public static void main(String[] args) {
method1();
}
public static void method1() {
//需求:打印1-3
//需求2:打印1-5
/**总结1:外层循环执行1次,内层循环执行多次*/
/**总结2:外层循环控制的是执行的轮数,循环3次,执行3轮*/
//★
for(int i=1;i<=3;i++) {
System.out.println(i);
/**总结3:内层循环控制的是每一轮中执行的次数,循环5次,每次打印1-5*/
for(int j=1;j<=5;j++) {
System.out.println(j);
}
}
}
}