流程控制指的是对java代码执行顺序的控制,在控制中加上我们的逻辑处理,从而完成相应的目标。在java中,流程控制可以分为三类:顺序、分支、循环。
- 顺序执行,表示逐行执行相应的语句,不涉及任何的关键字
- 分支控制,则需要按照判断条件动态的去执行符合条件的语句
- 循环控制,则需要按照循环判断条件动态的去执行循环语句
在代码编写过程中,我们通常用一对花括号将若干语句括起来,目的是从语法上将多条语句解释为一条语句
1、分支流程控制语句:
if语句
if(前提条件) 语句;
满足前提条件则执行语句,这是最简单的流程控制语句之一了。注意的一点事“前提条件”的结果必须为boolean型。true则执行。
if-else语句
if-else语句规定在满足前提条件的情况下执行某些操作,2、但若不满足呢?else在这里就体现了它的作用了。
格式:if(前提条件) 语句1 ; else 语句2;
说明:满足前提条件(true)则执行语句1,否则执行语句2.
switch语句
switch语句是一种具有处理多分支能力的流程控制语句。
switch(表达式){
case 值1 :语句1;
case 值12 :语句2;
……
[default:语句n;]
}
其中,要注意的一点是表达式的值必须是int、short、byte、char和枚举类型,jdk1.7之后可以使用String;值1和值2之间不能互相影响
switch语句的执行过程是:首先计算表达式的值,再与每个case后面的值作比较,若相同,则执行这个case后面的语句,直到遇到break或switch语句结束。若与所有的case后面的值比较后仍然没有相等的选项,则执行default后面的语句。
2、循环流程控制语句
while语句
格式:while(循环条件) 语句;
执行过程:判断循环条件,为true则执行语句,再回来判断循环条件……直到循环条件为false。因此,循环条件的结果必须为boolean值。
do-while语句
格式:do{语句序列}while(循环条件);
执行过程:执行循环体(语句序列),随后判断“循环条件”,为true则继续循环,为false则跳出。故此处循环条件结果依然为boolean值。而循环体至少执行了一次。
for语句
格式:for(初始化表达式;检测表达式;更新表达式)语句;
执行过程:“初始化表达式”是for语句第一个执行且只执行一次的语句。检测表达式必须是boolean型,用于 决定是否继续循环,更新表达式在每次循环体执行完毕后自动执行。
3、中断流程控制语句
Java中,中断流程控制语句主要包括break,continute和return。
break语句
break表示跳出当前循环,break可以用在switch\while\do...while\for语句中,
continue语句
continue和break类似,continue语句与break语句最大的区别是,break语句是跳出循环,而continue语句是提前结束此次循环,提早进入下次循环。
练习0:打印“加法表”
package com.liudm.demo2;
import java.util.Scanner;
public class SecondDemo {
//输出一个加法表
public static void main(String[] args) {
System.out.println("请输入一个自然数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0, j = num; i<=num && j >= 0;i++,j--){
System.out.println(i + "+" + j + "=" + (i+j));
}
}
}
练习1:打印如下图所示“星星”
练习2:打印如下图所示“星星”
练习3:打印如下图所示“星星”
练习4:打印如下图所示“菱形”
package com.liudm.demo3;
public class lingxing{
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5-i; j++)
System.out.print(" ");
for (int k = 1; k <= i*2-1; k++)
//for(int k = 0; k <= i*2-2; k++)
System.out.print("*");
System.out.println();
}
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= i; j++)
System.out.print(" ");
for (int k = 7; k >=i*2-1; k--)
System.out.print("*");
System.out.println();
}
}
}
练习5:打印“九九乘法表”
package com.liudm.demo3;
public class chengfabiao {
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();
}
}
}
练习6:求1~1000以内的质数(质数也称合数)
练习7:求若干个学生的成绩总和和平均分。要求:循环从控制台录入若干个学生的成绩,求每个学生5门课程中总分、平均分,在控制台输出。
package com.liudm.demo3;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
String name;
float score;
String ans;
do{
float sum = 0;
System.out.println("请输入学生姓名:");
Scanner sc = new Scanner(System.in);
name = sc.next();
System.out.println("请输入5门课程的成绩:");
for (int courseNum = 1; courseNum <= 5; courseNum++) {
System.out.println("请输入第" + courseNum + "门课程的成绩:");
Scanner input = new Scanner(System.in);
score = input.nextFloat();
sum = sum + score;
}
System.out.println("这5门课程的总成绩为:" + sum);
System.out.println("这5门课程的平均分为:" + sum/5);
System.out.println("是否继续?[Y/N]");
Scanner get = new Scanner(System.in);
ans = get.next();
}while("Y".equals(ans));
}
}
练习8:求1+2!+3!+...+20!的和。
练习9:从控制台输入三个整数x,y,z,请把这三个数由小到大输出。