概述
Java基础语法 (七)流程控制语句
学了这么多,终于拉到一点点编程的小手手了,有没有很兴奋?
如果大家有同感,那么恭喜你,接下去让我们再接再厉,共创辉煌。
对不起,单位宣传文章写多了
✿✿ヽ(°▽°)ノ✿
所谓流程就是按一定的顺序,顺序不同,结果不同。
在一个程序中,语句的执行顺序对结果有直接影响,作为一名未来的程序员,我们要非常清楚每一条语句的执行流程,并且熟练操控每条语句的执行顺序,来实现程序的有效运行。
流程控制语句分为三类:顺序结构、选择结构、循环结构。
一、顺序结构语句
这是程序中最基本也最简单的语句,没有什么高大上的语法结构,按照代码的先后顺序依次执行。
就是写在前面的代码先执行,写在后面的代码后执行。
比如说下面这段代码:
public class demon {
public static void main(String[] args) {
System.out.println("一生二");
System.out.println("二生三");
System.out.println("三生万物");
}
}
一生二
二生三
三生万物
Process finished with exit code 0
虽然这三句话是同时呈现在你眼前,但也是按照程序里面代码顺序出现的,绝不会颠覆代码顺序。什么意思呢,就是如果你代码里面的顺序是123,程序执行也是123,不会出现321或213这种情况。
除非电脑出现自主意识,但根据建国后不许成精这条潜规则,这种情况应该不会发生。
二、选择结构语句
选择这个词,本身隐含了大脑逻辑思考的过程,所以在选择结构语句中,代码要对具体的逻辑运算进行判断(逻辑运算的结果有两个:是和否),进行选择,按照不同的选择,执行不同代码。
具体来说,有两种选择结构的语句:if语句、switch语句。
(一)if语句
大概可以分为3种格式,但也有分成4种的,具体怎么分不重要,重要的是大家理解它的用法即可。
1、基本的if选择结构
这种语句结构简单,适用于一种判断的单分支模式,比如:我一看见厕所门口的标识是男,就没进去。????????????
格式为:
if(关系表达式){
语句体
}
执行流程:
①首先判断关系表达式,看结果是true还是false;
②若结果为true,就执行语句体;
③若结果为false,就不执行语句体。
老规矩,让我们高举知识的栗子……
例子1
public class demon {
public static void main(String[] args) {
int x=50;
if(x==50){
System.out.println("x等于50");
}
}
}
x等于50
Process finished with exit code 0
定义一个int类型的变量x,并赋值为50,现在判断:如果x等于50,那么系统就输出x等于50这句话。也就是当电脑判断关系表达式部分的结果为true时,执行语句体。
例子2
public class demon {
public static void main(String[] args) {
int x=50;
if(x==20) {
System.out.println("x等于20");
}
}
}
Process finished with exit code 0
当电脑判断关系表达式部分的结果为false时,不执行语句体。
怎么样,是不是很简单?
但别看他简单,有些地方特别容易被忽视,造成大家写语句的时候出错,而且还是那种一眼看不出来的。下面我来总结一下:
①关系表达式的结果无论复杂还是简单,必须是Boolean类型;
②if后面控制的语句体如果是一条,原则上大括号可以省略,如果是多条,就不能省略;建议永远别省略
③一般来说,有左大括号 { ,就没有分号 ;,反之亦然。
2、if else选择结构语句
这种语句体可以处理简单的条件分支情况,比如,我一看见厕所门口的标识是男,就没进去,转头去了女厕。????????????
格式为:
if(关系表达式){
语句体1
}else{
语句体2
}
执行流程:
①首先判断关系表达式,看结果是true还是false;
②若结果为true,就执行语句体1;
③若结果为false,就执行语句体2。
例子
public class demon {
public static void main(String[] args) {
int x=50;
int y=30;
if(x==y) {
System.out.println("x等于y");
}else{
System.out.println("x不等于y");
}
}
}
x不等于y
Process finished with exit code 0
定义两个int类型的变量,x=50,y=30; 如果x=y,则输出“x等于y”这句话,否则输出“x不等于y”这句话。
很显然x并不等于y,所以电脑执行了第二条语句。
下面让我们来做两道练习题巩固一下知识:
练习1:获取两个数据中较大的值;
练习2:判断一个数据是奇数还是偶数。
要求:创建键盘录入符
练习1答案
import java. util.Scanner;
public class demon {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数据");
int a=sc.nextInt();
System.out.println("请输入第二个数据");
int b=sc.nextInt();
int max;
if(a>b) {
max=a;
}else{
max=b;
}
System.out.println("max:"+max);
}
}
请输入第一个数据
10
请输入第二个数据
4
max:10
Process finished with exit code 0
逻辑其实很简单,无非就是键盘录入符和if else语句的结合,只不过需要多定义一个变量来接受最大值,即max。
现在让我们再来看一下这道题,不知大家有没有发现他和前面讲到的三元运算符很相似。(根据比较判断,给出的也是两个结果)那么这道题,其实也可以写成下面的样子:
import java. util.Scanner;
public class demon {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数据");
int a=sc.nextInt();
System.out.println("请输入第二个数据");
int b=sc.nextInt();
int max=(a>b)?a:b;
System.out.println("max:"+max);
}
}
请输入第一个数据
5
请输入第二个数据
9
max:9
两种方法,结果是一样的。
那么是不是所有的if else 语句都可以用三元运算符平替呢?
答案肯定是否,要不然这两个没有独立存在的必要,合并成一个方法就可以了。
着两者的区别是:
三元运算符可以实现的,都可以用if else语句替代,反之不成立。
因为在if语句里,有时控制的是一条语句,而不是一个结果,而三元运算符是运算符,操作完毕后应该有一个结果返回,而输出语句不能作为返回结果。
具体的例子,大家可以拿下面的练习2去改装一下试试就明白了,在此不赘述。
练习2答案
import java. util.Scanner;
public class demon {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数据");
int a=sc.nextInt();
int max=a;
if(max%2==0) {
System.out.println("max是偶数");
}else{
System.out.println("max是奇数");
}
}
}
奇数,不能被2整除。偶数,能被2整除。按照这个逻辑,编辑关系表达式。
3、if多选结构语句
在现实生活中,我们往往面临多种选择的局面,这个时候,前面的两种结构语句就不够看了,需要一个更高级的选择结构语句来处理这种问题。
格式为:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
执行流程
①首先判断关系表达式1,判断其结果是true还是false;
②若为true,则执行语句体1;
③若为false,就继续判断关系表达式2,判断其结果是true还是false;
④若为true,则执行语句体2;
⑤若为false,就继续判断后续的关系表达式,看其结果是true还是false;
⑥……
⑦如果没有任何关系表达式结果为true,就执行语句体n+1。
下面举一个比较经典的栗子
例题
要求用键盘录入输入学生成绩,判断并输出该成绩的等级:
90~100 优秀
80~90 好
70~80 良
60~70 及格
0~60 不及格
import java. util.Scanner;
public class demon {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的成绩");
int score=sc.nextInt();
if(score>=90 && score<=100) {
System.out.println("优秀");
}else if(score>=80 && score<=90){
System.out.println("好");
}else if(score>=70 && score<=80){
System.out.println("良");
}else if(score>=60 && score<=70){
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
请输入你的成绩
50
不及格
Process finished with exit code 0
请输入你的成绩
89
好
Process finished with exit code 0
请输入你的成绩
95
优秀
Process finished with exit code 0
相信很多朋友都是这样写的,而这已经可以基本满足程序的需要了。但是,如果你仔细观察一下这个程序,就不难发现它隐藏的bug。
比如我这样输入:
请输入你的成绩
101
不及格
Process finished with exit code 0
请输入你的成绩
-59
不及格
Process finished with exit code 0
请输入你的成绩
80
好
Process finished with exit code 0
芭比Q了???? 芭比Q了???? 芭比Q了????
程序员在编写程序时,除了要考虑正确数据以外,还需要考虑错误数据、边界数据这两个问题。
这是因为软件的使用者(俗称用户)千奇百怪,想法多变,有些人往往不会按照程序的要求输入数据。
就比如我
所以,上面这个例子可以修改成这样:
import java. util.Scanner;
public class demon {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的成绩");
int score=sc.nextInt();
if (score<0||score>100){
System.out.println("你输入的成绩有误");
} else if(score>=90 && score<=100) {
System.out.println("优秀");
}else if(score>=80 && score<90){
System.out.println("好");
}else if(score>=70 && score<80){
System.out.println("良");
}else if(score>=60 && score<70){
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
请输入你的成绩
101
你输入的成绩有误
Process finished with exit code 0
怎么样,学到这里是不是感觉还可以?
下面让我们做两道题验证一下:
练习1
键盘录入x的值,计算出y的值并输出。
x和y的关系如下:
x的值 | y的值 |
---|---|
x>=3 | y=2z+1 |
-1<x<3 | y=2x |
x<=-1 | y=2x-1 |
练习2
键盘录入月份值,并输出对应季节
答案下期公布,今天先到这里。谢谢阅读
文章中图片部分来自网络,侵权立删
最后
以上就是温暖裙子为你收集整理的自学Java(随时放弃十 流程控制语句①)Java基础语法 (七)流程控制语句的全部内容,希望文章能够帮你解决自学Java(随时放弃十 流程控制语句①)Java基础语法 (七)流程控制语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复