流程控制;流程控制语句:
顺序、选择、循环
什么是顺序?
package cn.mtianyan.flow;public class OctalOutput { public static void main(String[] args) { //定义一一个整型变量n ,值为123 int n; n = 123; System.out.println("n=" + n); //定义一个整型变量,存放八进制数 int octal = 037; System.out.println("octal=" + octal); // 输出结果为十进制 System.out.println("octal=" + Integer.toOctalString(octal)); // 输出结果为八进制对应字符串 } }
运行结果:
顺序结构,一句一句按着顺序执行。
选择结构: if if-else
if(条件) { <语句块> }if(条件){ <语句块> }else{ <语句块> }
根据条件,选择执行if还是执行else后面的语句。
比如之前用户输入一个数,判断计数还是偶数,不想每次都重新运行。希望可以一直输入,就要用到循环结构。循环设置终止条件。
三大流程控制语句:顺序、选择、循环
学习的主要内容:
选择结构: if结构;if-else结构;多重if;嵌套if;switch结构
循环结构 while;do-while;for;循环嵌套
多重if结构
选择结构
if(条件) 语句;if(条件){ 语句; }
只有一条语句,大括号可以省略。条件小括号后面没有分号。
if(条件) 语句1;else语句2;if(条件){ 语句1; }else{ 语句2; }
案例需求描述:编写一个程序,根据考试成绩,输出相应的评定信息。
成绩大于等于90分,输出“优”
成绩大于等于80分且小于90分,输出“良”
成绩大于等于60分小于80分,输出“中”
成绩小于60分, 输出“不及格'
package cn.mtianyan.flow;import java.util.Scanner;public class ScoreAssess { public static void main(String[] args) { System.out.println("请输入成绩: "); Scanner scanner = new Scanner(System.in); int score = scanner.nextInt(); if(score >=90) { System.out.println("优"); } if (score>=80 & score<90){ System.out.println("良"); } if(score >=60 & score<80){ System.out.println("中"); } if (score <60){ System.out.println("不及格"); } } }
运行结果:
这是我们通过简单的多个if的实现,可以看到>=90和<90就是一种取反的范围。
多重if结构语法格式:
if(表达式1) 语句1;else if(表达式2) 语句2;else if(表达式3) 语句3;else 语句n;
package cn.mtianyan.flow;import java.util.Scanner;public class ScoreAssess { public static void main(String[] args) { System.out.println("请输入成绩: "); Scanner scanner = new Scanner(System.in); int score = scanner.nextInt(); if(score >=90) { System.out.println("优"); } else if (score>=80){ // 相当于score>=80 & score<90 System.out.println("良"); } else if(score >=60){ System.out.println("中"); } else{ System.out.println("不及格"); } } }
运行结果:
这里应该注意其中包含的隐含条件。else if 是上句if的取反范围加上自己的if条件。
package cn.mtianyan.flow;public class IfChoose { public static void main(String[] args) { int a = 5, b = 4, c = 3, d = 2; if (a > b && b > c) { System.out.println(d); } else if ((c - 1 >= d) == 1) { System.out.println(d + 1); } else { System.out.println(d + 2); } } }
Error:(9, 33) java: 不可比较的类型: boolean和int
else if ((c - 1 >= d) == true) // boolean只能与布尔值进行比较
编程练习
根据下面数学函数,编写程序根据x的值,计算y的值,最后输出x和y的值。(使用多重if-else结构完成)
任务
定义整型变量x并初始化为-5
定义整型变量y并初始化0
根据所给条件,使用多重if-else结构求y的値
输出x和y的値
package cn.mtianyan.flow;public class IfElseDemo { public static void main(String[] args) { int x = -5; int y = 0; if(x<0){ y=-1; }else if(x==0){ y=0; }else{ y=1; } System.out.println("x="+x+",y="+y); } }
运行结果:
嵌套if结构
将整个if块插入另一个if块中
if(表达式1) if(表达式2) if(表达式3) 语句;else 语句;
有多个if,要注意跟哪个else对齐。
案例: 从键盘输入两个整数,经过判断输出他们的关系(大于,小于,等于)
package cn.mtianyan.flow;public class IntCompare { public static void main(String[] args) { int x = 5,y=15; // 判断x和y是否相等 if (x != y){ if (x >y ){ System.out.println(x+"大于"+y); }else{ System.out.println(x+"小于"+y); } }else { System.out.println(x+"和"+y+"相等"); } if (x != y) if (x >y ) System.out.println(x+"大于"+y); else System.out.println(x+"和"+y+"相等"); // else语句与离它最近的进行匹配,对应到x>y这个了 } }
大括号要加,else与最近的if匹配。
Switch结构
if和switch的区别
if结构:
判断条件是布尔类型,判断条件是一个范围(成绩大于60)
switch结构:
判断条件是常量值
switch(表达式){ case 常量表达式1: 语句1; break; case 常量表达式2: 语句2;break; default: 语句3; }
遇到break,会跳出。default可以省略,表达式值与常量表达式匹配。JDK6.0以前这个表达式最终结果只能是int类型(等价的char等)。
JDK 7.0以后表达式的值可以是基本数据类型的byte,short,int,char ,以及String类型。
案例 从键盘输入1-7之间的任意数字,分别输出对应的信息。
1一星期一;2一星期二;3一星期三;4一星期四;5-星期五;6一星期六;7一星期日;
package cn.mtianyan.flow;import java.util.Scanner;public class WeekDemo1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入1-7之间的数字: "); int n = scanner.nextInt(); switch (n){ case 1: System.out.println("星期一"); case 2: System.out.println("星期二"); case 3: System.out.println("星期三"); case 4: System.out.println("星期四"); case 5: System.out.println("星期五"); case 6: System.out.println("星期六"); case 7: System.out.println("星期日"); default: System.out.println("该数字超出了1-7的范围!"); } } }
运行结果:
如果不加break; 从和n匹配的一直执行到最后去。
package cn.mtianyan.flow;import java.util.Scanner;public class WeekDemo1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入1-7之间的数字: "); int n = scanner.nextInt(); switch (n){ 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("该数字超出了1-7的范围!"); } } }
改写程序为字符串的输入
package cn.mtianyan.flow;import java.util.Scanner;public class WeekDemo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入表示星期的英文单词: "); String week = scanner.next(); week = week.toUpperCase(); // 把字符串中字符全部改为大写 switch (week){ 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("单词输入错误!"); } } }
作者:天涯明月笙
链接:https://www.jianshu.com/p/e2a83565accf
共同学习,写下你的评论
评论加载中...
作者其他优质文章