正常流程
1.分支控制
分支控制的关键字:if , else , switch
(1)if关键字
注意:if是按按区间判断的,可以完成对点的选择
格式如下:
if(判断分支是否执行的条件){
当条件成立的时候,需要执行的代码逻辑块;
}
在if中的判断条件,应该是一个表达式,而这个表达式最终得到的结果是一个boolean值。
举一个例子:从键盘上输入一个分数,判断分数属于的等级:
以下是核心代码·:
if (score >= 60&&score<70) {
System.out.println("及格");
}
if (score >= 70&&score<90) {
System.out.println("良好");
}
if (score >= 90&&score<=100) {
System.out.println("优秀");
}
if (score > 100 || score < 0) {
System.out.println("输入错误,请重新输入");
}
if(score<60&&score>=0) {
System.out.println("不及格");
}
运行结果如下:
如果分支出现了多条,我们用一个if不能正常判断是否选择了全部可能的选项,我们可以使用另一个关键字:else.
(2)else关键字
格式如下:
if(判断分支是否执行的条件){
当条件成立的时候,需要执行的代码逻辑块;
}else if(){
当条件成立的时候,需要执行的代码逻辑块;
}
else一定是跟在if之后的一个关键字,直接写是错的。
举一个例子:从键盘上输入一个分数,判断分数属于的等级:
if(score<0||score>100) {
System.out.println("输入错误");
}
else if(score<60) {
System.out.println("不及格");
}else if(score<=70) {
System.out.println("及格");
}else if(score<=80) {
System.out.println("中等");
}else{
System.out.println("优秀");
}
运行结果如下:
(3)switch关键字
注意: switch(弥补if判断过程太过于繁杂的判断,针对一个点)
格式如下:
switch的结构
switch(key){
case value1: //case value1:这种写法类似于一个标志
代码块1;
break;
case value2:
代码块2;
break;
default:
break;
}
package com.yanan.test;
public class FooSwitch {
public static void main(String[] args) {
int score=80;
switch(score) {
case 80:
System.out.println("优秀");
break;
case 70:
System.out.println("良好");
break;
default:
break;
}
}
}
运行结果如下:
注意:
switch判断是按(key,value)判断的 ,当key=value时,他会按顺序向下执行,break跳出循环。
k值
①四类八种:
整型中byte,short,int都可以作为switch的key值存在,但是long型不可以;
浮点型float,double型不可以作为key值存在;
字符型char可以作为switch的key值存在
布尔型boolean不能作为key值存在,它转换不成int。
②字符串使用双引号标记的,char是单引号标记的,Java中字符串的定义类型是:String在对象里面可以写等于的,其余的都不可以,String可以当key值存在(JDK1.7之后包括JDK1.7才可以吧String当key值存在)。
2.循环控制
(1)循环:不停地重复地做某一件事。
(2)循环控制的分类:for循环,while循环,do…while循环,ForEach循环,递归(方法的循环)。主要介绍一下前三种循环控制。
(3)①for循环
for循环的格式:
for(初始化循环条件;定义继续循环的条件;条件变更方式){
需要循环的代码块;
}
package com.yanda.practice;
public class FooFor {
public static void main(String[] args) {
for(int i=0;i<10;i++) {
System.out.println("Hello World");
System.out.println("第"+(i+1)+"次输出");
}
}
}
运行结果如下:
注意:省略第一个条件,必须在外面进行声明赋值;省略第二个条件:无限循环;省略第三个条件:无限循环,但是不产生变更条件。
举例说明:
package com.yanan.test;
public class FooFor {
public static void main(String[] args) {
int i=0;
for(;;i++) {
if(i<30) {
continue; //继续当前循环,后面的代码不执行,当跳出continue时执行下面的代码
}
System.out.println("你好");
System.out.println("第"+(i+1)+"次输出");
if(i==49) {
break; //break跳出当前循环
}
}
System.out.println(i);
}
运行结果:
②while循环
格式如下:
while(表达式) {
当表达式为真时,则继续执行;for执行完就跳出;while执行完接着判断,如果满足继续执行循环代码块;
}
while(true) {
System.out.println("hahah");
if(scanner.nextInt()==121) {
System.out.println("程序终止");
break;
}else {
System.out.println("程序继续");
}
}
运行结果如下:
③do…while循环
格式如下:
do{
循环代码块;
}while(表达式);
举例说明:
核心代码块:
int a=5;
do {
System.out.println("执行");
}while(a>4);
运行结果如下:
④ForEach循环
格式如下:
for(类型 tmp: 容器(容器的元素类必须和类型一致)){
遍历输出;
}
注意:ForEach循环拿不到数组的角标,一般用于遍历某一个数组,拿到其中的某一个值。如果要对数组的角标进行操作时,要用for循环。
(4)for循环,while循环,do…while循环的比较
①for循环已经知道了循环的次数
while循环大多数用在不知道循环的次数上面,也可以用for( ; ; )(但是这个不容易理解)
②do…while循环:先无条件执行一次,再判断循环条件,while先判断循环条件,满足则执行。