三大控制结构
顺序结构,选择结构,循环结构;三种不同的结构都有一个共同点,就是它们都只有一个入口,也只有一个运行出口。这些单一的入口,出口可让程序可控,易读,好维护。
顺序结构
程序基本的控制结构,一种自上而下的运行方式,即程序会按代码一行一行的执行(顺序执行语句),其实宏观上,程序的正常运行就是一种自上而下的顺序结构。有一些程序并不按照顺序执行语句,这个过程可以称作控制转移,它由另外两大控制结构决定,即“选择结构”,“循环结构”。
选择结构
选择结构,选择结构一般都是由条件决定程序的执行顺序,在执行的时候,“非此即彼”,什么意思?,即程序走到选择结构的分支语句时,通过条件的判断,从而改变的程序的走向。
选择结构由两种语句完成,一种是if-else语句,另一种是switch-case语句
if-else语句
使用方式:
if(条件表达式){
语句1
}else{
语句2
}
解释:if-else语句,小括号内写的是条件表达式,返回值类型为boolean类型,即括号内表达式的值只有true或false,当条件表达式返回true时,程序执行语句1,当返回false时,程序执行语句2
代码演示:
package test; public class Test { public static void main(String[] args) { int a = 10; int b = 20; if(a+b>=30){ a = a + 10; }else{ b = a +10; } System.out.println("a的值为:"+a); System.out.println("b的值为:"+b); } }
输出结果: a的值为:20 b的值为:20
代码讲解:条件表达式 a+b >= 30 显然正确的,返回true,这时程序执行了a = a +10,程序就会退出if-else控制语句,开始输出打印a,b的值,这里可以看到,if-else语句满足“非此即彼”的选择结构概念
if语句
有时候我们可能仅需要判断某些条件是否满足,而需不需要在程序顺序执行的情况下做一些补充,这时我们可以对if-else语句做一些简单的书写
代码演示:
int a = 10; int b = 20; if(a+b>=30){ a = a + 10; } System.out.println("a的值为:"+a); System.out.println("b的值为:"+b);
代码讲解:这段代码跟着上述的例子进行了修改,这时我的需求可能仅仅就是看看a+b能不能大于等于30,如果不能我就给a+10,让他大于等于30。这时候就可以直接仅仅写if语句来完成
if-elseif-else语句
有时候我们的需求可能就会多了,比如成绩分为A,B,C,D等级,大于等于90分为A,大于等于75分为B,大于等于60分为C,不及格为D
代码演示:
package test; import java.util.Scanner; public class Test { public static void main(String[] args) { //创建扫面类对象sc Scanner sc = new Scanner(System.in); //使用扫描类控制接收学生的成绩 System.out.println("请输入你的考试成绩:"); int score = sc.nextInt(); if(score>=90){ System.out.println("你的成绩等级为A"); }else if (score>=75) { System.out.println("你的成绩等级为B"); }else if (score>=60) { System.out.println("你的成绩等级为C"); }else { System.out.println("你的成绩等级为D"); } //关闭扫描对象 sc.close(); } }
代码讲解:上述例子展示,我们可以看到比if-else语句多了两个esleif(条件表达式)的判断语句,elseif()个数可以根据需要自行添加多个,或者只有一个,大家需要记住的是在if-else分支语句中,只有if和elseif是可以带着条件表达式的,而else后面是不跟着条件表达式的
相信初学者回想,怎么才能让我们输入一些数据给后台,然后实现人机交互呢?这里就给大家提供了一个扫描类的方法使用,使用扫描类前,我们需要创建一个扫描类对象,写法是固定的,对象名sc可以更换。然后我们定义一个变量int a,然后用扫描类sc.nextInt()方法接收用户从键盘传入的数字。最后我们需要调用sc对象的close()方法,我们用完了这个扫描类对象,我们就释放它。这里一些知识后期接着补充,现在只用知道怎么从控制台获取用户输入的数据即可
多分支语句switch-case
在程序选择结构中,当我们有多分支语句的时候如果只用if-else控制会比较繁琐,所以java还提供了switch-case语句
使用方式:
switch(条件表达式)
{
case1:语句1;break;
case2:语句2;break;
...
default:最后一个语句;break;
}
解释:这里的表达式,可就不再是true和false两个这么少了,它可以有很多个,比如返回值可以是1,2,3,...n,
也可以是a,b,c.....,也可以是字符,这里只需要我们自行选择即可。需要注意的是case后面跟着的是常量选择值。
我们来个案例演示一下。
例如: 有时候我们会有这样的需求,学校一开始给我们的评级为ABCDE五个等级,现在需要转换成分数,来和其他科目整合一起,计算成绩总分,这时候我们可以这么做
代码演示:
package test; import java.util.Scanner; public class Test { public static void main(String[] args) { //定义扫面类sc Scanner sc = new Scanner(System.in); //使用扫描类控制接收学生的成绩 System.out.println("请输入你的成绩等级(请输入大写的等级):"); String grade = sc.next(); switch (grade) { case "A": System.out.println("你的成绩为90分"); break; case "B": System.out.println("你的成绩为80分"); break; case "C": System.out.println("你的成绩为70分"); break; case "D": System.out.println("你的成绩为60分"); break; default: System.out.println("不及格,没有成绩"); break; } //关闭扫描对象 sc.close(); } }代码讲解:有了switch-case语句,我们在处理多个条件的情况下就会相对简单多了,这里大家需要提醒一下,上述代码看似有5个条件,其实只限定了4个条件,即A,B,C,D的条件,剩下的default,意思是其他情况都会执行
System.out.println("不及格,没有成绩");
大家可以随便输入任意字符,就会发现,程序都会执行输出"不及格,没有成绩"。然后就是,每个case后面都应该break;break语句的作用是当程序执行了case里的语句就会跳出switch-case结构,即使程序有了出口。
具体怎么选择if-else语句,switch-case语句,这里建议是当条件情况少的时候,推荐使用if-else,当条件多了的时候就是用switch-case语句。
循环结构
程序的又一重要控制结构,循环结构,有时候我们可能会执行某一个动作,如果没有循环结构,我们可能只能反复的书写代码执行,如从1输出到100,我们可能就要写100条输出语句,而循环结构,可以让我们只写一条。
for循环
for循环,是循环结构中的一种循环方式,一般是在知道循环次数的情况,使用for循环
例如:从1输出到100
代码演示:
package test; public class Test { public static void main(String[] args) { for(int i = 1; i <= 100; i++){ System.out.print(i+" "); } } }
代码讲解:
上述就是for循环最基本的使用方式,在输出语句的时候我们选择了print(),它和println()输出的区别是print()方法输出的内容不会换行,而是用println()方法,输出的时候会自动给我们换行。
for()循环详细讲解:
for(①表达式; ②结束条件; ④步长){
③执行语句;
}
在for循环里面,我们一定会提供一个初始常量即①,然后是结束条件②,再来是③执行语句,最后是步长④
程序运行顺序
第一次:①--->②--->③--->④
第二次:②--->③--->④
第三次:②--->③--->④
....
直到结束条件不满足了就会停止循环
上述案例中i 从 1 开始计数,当i = 101,不满足i <=100时,程序停止输出,退出for循环
while循环
一般不知道循环的具体次数我们都会选择while循环或者do-while循环,还是跟着上面的从1输出到100的例子
代码演示:
package test; public class Test { public static void main(String[] args) { int i = 1; while(i<=100){ System.out.print(i+" "); i++; } } }
代码讲解:我们先定义一个计数变量i,然后控制条件i<=100满足就执行循环体输出语句,然后i++;达到控制循环的作用
while循环详解:
①定义循环变量初值
while(②控制条件){
③循环体
④步长
}
第一次:①--->②--->③--->④
第二次:②--->③--->④
第三次:②--->③--->④
....
直到结束条件不满足了就会停止循环
do-while循环
do-while循环和while循环差别不大,do-while循环相对while循环来说,差别就是do-while会先执行一次,再进行条件的判断,而while循环上来就判断,然后才是执行
代码演示:
package test; public class Test { public static void main(String[] args) { int i = 1; do{ System.out.print(i+""); i++; }while(i<=100); } }
代码讲解:和while循环基本没什么差别,执行的循环体是放在do{}里面,记得while()后面需要加上";"结束
总结点评:程序因为有了控制结构,所以代码的形式才是多样,在程序的世界里,方法永远没有唯一,结果却都应该只有一个,所有结构都应该根据现实情况进行适应的调整,没有最好的方案,只有更好的,期待大家都能在bigdodo的文档帮助下,有效的学会玩java。让我们一起去感受体验代码的魅力。共勉!