Java小白Study04--分支结构 Switch结构 for循环结构
一、分支结构
1.单分支结构
单分支结构比较简单, if (判断条件){ 符合判断条件后指定的代码}
执行:先判断是否符合条件,如果符合条件,就会执行过大括号里边的代码 。
如果没能满足条件,就会跳过 if 语句,程序继续运行。代码如下:
public class Day04 {
public static void main(String[] args) {
int a=10;
if(a>5) {
System.out.println("我有"+a+"铅笔");
}
}
}
2.多分支结构
多分支结构比起单分支结构比较方便一点是如果 if 之后的判断条件没能够执行则会执行 else 里的语句。多分支结构组成如下:
if(判断条件){符合判断条件后执行的代码}
else{不符合判断条件的其他情况,执行else当中的代码}
在这之后我可以做一个小案例,测试我们的5元钱能够买几支铅笔。代码如下:
package cn.tedu.method;
import java.util.Scanner;
public class Day04 {
public static void main(String[] args) {
System.out.println("5元钱能够买几支铅笔:");
int a=new Scanner(System.in).nextInt();
if(a<=5) {
System.out.println("确实能买到"+a+"支铅笔");
}else {
System.out.println("买不到这么多");
}
}
}
3.嵌套分支语句
嵌套分支就是运用多次if else 语句来实现多重判断。具体形式是这样的:
if(判断条件1){
符合条件1,执行此处的代码1
}else if(判断条件2){
不符合条件1,但是符合条件2,执行此处的代码2
}else if(判断条件3){
不符合前面的两个条件,但是符合条件3,执行此处的代码3
}else{
以上条件都不符合,属于其他情况,执行此处的代码4
}
掌握之后我们可以做一个小的案例,关于商场根据消费水平来进行打折的案例:需求:接收用户输入的商品的原价,满10000打骨折,满5000打5折,满2000打9折。代码如下:
package cn.tedu.study1;
import java.util.Scanner;
//本类用于测试商品打折案例
public class Day04TestDiscount {
public static void main(String[] args) {
//提示并接收用户输入的原价
System.out.println("请输入商品的原价:");
double price = new Scanner(System.in).nextDouble();
//定义一个变量通用来保存实际支付的结果
double count = price;//注意count的初始值是商品的原价
if(price>=10000) { //满10000
count = price * 0.1;
System.out.println("您实际应该支付的金额为:"+count);
}else if(price>=5000) { //满5000
count = price * 0.5;
System.out.println("您实际应该支付的金额为:"+count);
}else if(price>=2000) { //满2000
count = price * 0.9;
System.out.println("您实际应该支付的金额为:"+count);
}
}
}
用户可以在控制台输入消费金额,然后程序自动给出打完折的实际应付金额。
4.延伸
我们的else后的语句块里还可以进行一定的操作,这里我们还是直接以案例的形式给大家呈现,我们可以做一个学生成绩评定等级的案例:要求输入的成绩是比较符合实际情况的,等级分为优秀,良好,中等,及格,不及格。代码如下:
package cn.tedu.study1;
//本类用于判断学员分数的档位
import java.util.Scanner;
public class Day04TestScore {
public static void main(String[] args) {
//提示并接收学员的分数
System.out.println("请输入你的分数:");
int score = new Scanner(System.in).nextInt();
//为了增强程序的健壮性,如果用户输入的数据不符合规则,就结束
if(score<=0 || score>=100) {
System.out.println("输入数据不合法,请重新输入!!!");
}else {
//判断分数的段位,并输出结果
if(score >=90) {
System.out.println("优秀!");
//}else if(score >=80 && score<=89) {
}else if(score >=80) {
System.out.println("良好!");
}else if(score >=70) {
System.out.println("中等!");
}else if(score >=60) {
System.out.println("及格!");
}else {
System.out.println("你好意思吃饭吗?");
}
}
}
}
二、switch结构
1.switch判断int类型变量
switch同样也能做到判断的目的,但是它有自己的特色。下边我们来直接看switch结构的组成: switch(变量名)
{
case value1 : 要操作的语句;break; //可以有多个case,break可选
case value2 : 要操作的语句;break; //可以有多个case,break可选
case value3 : 要操作的语句;break; //可以有多个case,break可选
default : 要操作的语句; //可选,如果前面的case都没匹配到,执行default
}
switch之后括号里的变量名承载的变量类型只能是:byte short char int String (jdk1.5以后支持) ,程序执行会拿着变量名承载变量的值,依次与case后的值作比较,如果不加break,会向后穿透所有case,包括default如果设置了default选项,并且没有任何case匹配到的话,就会执行default的选项 .break与default是可选项,根据具体业务来决定加不加。如果所有case都未匹配到,并且配置了default,会执行default的代码。如果运用了break 程序跳出当前语句 。代码如下:
package cn.tedu.study1;
import java.util.Scanner;
//本类用于练习switch结构
/**
* 总结:
* 1.变量a的类型byte short char int String(jdk1.5以后支持)
* 2.会拿着变量a的值依次与case后的值作比较,如果不加break,会向后穿透所有case,包括default
* 3.如果设置了default选项,并且没有任何case匹配到的话,就会执行default的选项
* break与default是可选项,根据具体业务来决定加不加
*
*/
public class Day04TestSwitch {
public static void main(String[] args) {
//定义一个变量
int a=new Scanner(System.in).nextInt();
switch(a) {
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;
default:System.out.println(" 大错特错 ");
}
}
}
2.switch判断String类型变量
练习,创建一个String类型的变量,然后我们用switch语句去操作。代码示例如下:
package cn.tedu.study1;
//本类用于练习switch结构
public class Day04TestSwitch2 {
public static void main(String[] args) {
//定义一个变量
String s="星期四";
//Ctrl+Alt+向下键-----快速向下复制本行代码
switch(s) {
case "星期一":System.out.println("星期一喝烩面");break;
case "星期二":System.out.println("星期二喝拉面");break;
case "星期三":System.out.println("星期三喝杂酱面");break;
case "星期四":System.out.println("星期四喝拌面");break;
case "星期五":System.out.println("星期五喝炒拉面");break;
case "星期六":System.out.println("星期六吃牛排");break;
case "星期日":System.out.println("星期日吃海鲜");break;
default:System.out.println(" 想吃点啥就吃点啥吧 ");
}
}
}
三、循环结构
1.for循环
当我们需要多次重复的执行某些代码时,我们不可能打印或者编写多次,这个时候就需要我们去运用for语句来实现此功能。for语句的结构如下:
for(开始条件; 循环条件 ; 更改条件){
满足循环条件后,要执行的循环体}
当我们编写for语句的时候一定要有清晰的思路,这就要求我们对其几个记忆点有较深的认识;记忆点如下:
1)从哪开始 到哪结束 如何变化
2)开始条件只会在第一轮定义循环变量时执行一次,后面的循环均不执行此条件
嵌套for循环
格式:for里有for
总结:1.外层循环执行一次,内层循环执行多次
3)外层循环控制的是行数,内层循环控制的是列数
下边我们用代码案例测试for循环,要求: 打印4次自己的宣言,打印一下1~10,打印一下从10到1,打印一下打印一下8,88,888,8888,代码如下:
package cn.tedu.study1;
//本类用于测试循环结构for结构
public class Day04TestFor {
public static void main(String[] args) {
//需求:打印4次自己的宣言
//格式:for(开始条件;循环条件;更改条件){符合循环条件执行的循环体}
for(int i=1;i<5;i++) {
System.out.println("越努力的人越幸运!");
}
//需求:打印一下1~10
//从哪开始 到哪结束 如何变化
for(int m=0;m<11;m++) {
System.out.println(m);
}
//需求:打印一下10~1
for(int n=10;n>0;n--) {
System.out.println(n);
}
//需求:打印一下8,88,888,8888,
for(int a=8;a<88888;a=a*10+8) {
System.out.print(a+" ");
}
}
}
2,fro循环体加入if判断语句
当我们在for循环的循环体中加入了if判断语句,每一次的for循环都会去判断是否符合if的判断条件,我们直接以案例来测试一下,要求:分别求出1~100以内的数的和, 1~100偶数的和, 1~100以内奇数的个数。代码如下:
package cn.tedu.study1;
//本类用于测试循环结构for结构
public class Day04TestFor2 {
static int sum=0;
public static void main(String[] args) {
m1();
m2();
m3();
}
//需求:求[1~100]以内奇数的个数
private static void m3() {
for(int a=0;a<=100;a++) {
if(a%2==1) {
sum=sum+1;
}
}
System.out.println("[1~100]以内奇数的个数:"+sum);
sum=0;
}
//需求:求[1~100]以内偶数的和
private static void m2() {
for(int a=0;a<=100;a++) {
if(a%2==0) {
sum=a+sum;
}
}
System.out.println("[1~100]以内偶数的和为:"+sum);
sum=0;
}
//需求:求[1~100]以内数的和
private static void m1() {
for(int a=0;a<=100;a++) {
sum=a+sum;
}
System.out.println("[1~100]以内数的和为:"+sum);
sum=0;
}
}
3.嵌套for语句
嵌套for语句的字面意思就是在for语句的循环体中继续加入for语句,来做行和列的打印。外层循环执行一次(控制轮回次数),内层循环执行多次(控制每次轮回执行次数)。具体操作代码如下:
package cn.tedu.study1;
//本类用于测试嵌套for语句
public class Day04TestForDemo {
public static void main(String[] args) {
/**外层循环执行一次(控制轮回次数),
* 内层循环执行多次(控制每次轮回执行次数)
*/
for(int i=1;i<=3;i++) {
System.out.println("外层循环的第:"+i+"轮");
for(int j=1;j<=4;j++) {
System.out.println("内层循环的第:"+j+"轮");
}
}
System.out.println("********打印矩形********");
//三行五列
for(int i= 1;i<=3;i++) {
for(int m= 5;m>=1;m--) {
System.out.print("*");
}
System.out.println(" ");
}
}
}
运行程序:
4.拓展9*9乘法表
package cn.tedu.method;
public class Day04TestForExpand {
public static void main(String[] args) {
for(int m=1;m<=9;m++) {
for(int n=1;n<=m;n++) {
System.out.print(m+"*"+n+"="+m*n+" ");
}System.out.println(" ");
}
}
}
运行程序: