JAVA 流程控制
顺序结构
Java中最基本的结构,按照顺序一句一句执行语句。
任何一个算法都离不开的基本算法结构。
顺序结构时最简单的算法结构。
package scanner;
public class Demo03 {
public static void main(String[] args) {
System.out.println("hello world01");
System.out.println("hello world02");
System.out.println("hello world03");
System.out.println("hello world04");
System.out.println("hello world05");
}
}
if选择结构
-
if单选择结构
语法:
if(判断条件){ //如果条件为true,执行结构体 }else{ //条件为false,执行结构体 }
-
if双选择结构
语法:
if(判断条件){ //如果条件为true,执行结构体 }else{ //条件为false,执行结构体。 }
package scanner; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { /*考试分数大于60就是及格,小于60就是不及格;*/ Scanner scanner=new Scanner(System.in); System.out.println("请输入学生成绩:"); double score=scanner.nextDouble(); if(score>=60||con<=100){ System.out.println("及格"); }else{ System.out.println("不及格!"); } scnner.close(); } }
-
if多选择结构
语法:
if(判断条件){ //如果条件为true,执行结构体 }else if(判断条件){ //如果条件为true,执行结构体 }else if(判断条件){ //如果条件为true,执行结构体 }else if(判断条件){ //如果条件为true,执行结构体 }else{ //如果条件为true,执行结构体 } }
注意:
- if语句至多有一个else语句,else语句在所有的else if语句之后
- if语句可以由若干个else if语句,他们必须在else语句之前
- 一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行。
-
嵌套的if结构
在一个if语句中嵌套一个if语句;
语法:
if(条件判断语句){ //执行语句体; if(条件判断语句){ //执行语句体; } }
package scanner; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { /*考试分数大于60就是及格,小于60就是不及格;*/ Scanner scanner = new Scanner(System.in); System.out.println("请输入学生成绩:"); double score = scanner.nextDouble(); if (score>=0&&score<=100){ if (score >= 60 || score <= 100) { System.out.println("及格"); } else { System.out.println("不及格!"); } }else { System.out.println("请输入0-100的数!"); } } }
-
switch多选择语句结构
-
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
-
switch语句的变量类型可以是:
- byte、shout、int、或者char。
- switch支持字符串String类型
- case标签必须为字符串常量或者字面量。
-
语法:
public static void main(String[] args) { switch (){ case value: //语句; break; case value: //语句; break; case value: //语句; break; default; } }
-
package scanner;
import java.util.Scanner;
public class switchDemo {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入字符:");
int grade=scanner.nextInt();
switch (grade){
case 60:
System.out.println("A");
break;
case 70:
System.out.println("B");
break;
case 80:
System.out.println("C");
break;
default:
System.out.println("请重新输入;");
}
}
}
while循环
语法:
package scanner;
public class whileDemo {
public static void main(String[] args) {
while(布尔表达式){
//执行语句体;
}
}
}
-
只要布尔表达式为true,循环就会一直执行下去;
-
大多数情况是让循环停止下来,我们需要一个让表达式失效的方法来结束循环
-
少部分情况需要循环一直执行,如服务器响应监听
-
循环条件一直为true就会造成无限循环,我们正常的业务编程中尽量避免死循环,会影响程序性能或者造成程序卡死崩溃。
package scanner; public class whileDemo { public static void main(String[] args) { //1-100求和; int i=0; int sum=0; while (i<=100){ sum+=i; i++; } System.out.println("1-100的和为:"+sum); } }
Dowhile循环
语法:
package scanner;
public class whileDemo {
public static void main(String[] args) {
do {
//循环体语句;
}while (布尔表达式);
}
}
-
do while和while的区别:
1. 对于while语句而言,如果不满足条件,则不能进入循环。 do while 循环至少执行一次; 2. while 先判断后执行,DOWHILE是先执行后判断;
for循环
-
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构;
-
for玄幻执行的次数是在执行之前确定的。
-
语法:
package scanner; public class forDemo { public static void main(String[] args) { for(初始化;布尔表达式;跟新){ //循环结构体; } } }
package scanner;
public class forDemo {
/*打印0-100之间的奇数和偶数和*/
public static void main(String[] args) {
int oddSum=0;
int evenSum=0;
for(int i=0;i<=100;i++){
if(i%2==0){
evenSum+=i;
}else{
oddSum+=i;
}
}
System.out.println("奇数和:"+evenSum+"偶数和:"+oddSum);
}
}
package scanner;
public class forDemo {
/*for循环输出1-1000之间能够被5整除的数,并且每行输出3个*/
public static void main(String[] args) {
for(int i=0;i<=1000;i++){
if (i%5==0){//输出5的倍数
System.out.print(i+"\t");
}
if (i%(5*3)==0){//输出换行
System.out.println();
}
}
}
}
package scanner;
public class forDemo {
/*for循环打印99乘法表*/
public static void main(String[] args) {
for (int i=1;i<=9;i++){
for (int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
}
}
增强for循环
语法格式:
package scanner;
public class forDemo {
/*for循环打印99乘法表*/
public static void main(String[] args) {
for (声明语句:表达式){
//循环体;
}
}
}
-
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,作用域限定在循环语句体中。其值与此时数组元素的值相等。
-
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
package scanner; public class forDemo { public static void main(String[] args) { int[] number={10,20,30,40,50};//定义一个数组; /*循环遍历数组*/ for (int x:number){ System.out.println(x); } } }
break、continue、goto语句
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中的剩余的语句。
continue语句用于在循环语句体中,用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
package scanner;
public class forDemo {
public static void main(String[] args) {
/*打印101-150之间的质数;
质数:在大于1的自然数中,除1和本身以外不能再有其他因数的自然数
*/
int count=0;
outer:for (int i=101;i<=150;i++){//标签outer,不建议使用
for (int j=2;j<i/2;j++){
if(i%j==0){
continue outer;
}
}
System.out.print(i+" ");
}
}
}