目录
一、顺序控制
介绍:程序从上到下逐行的执行,中间没有任何判断和跳转。
Java中定义变量时采用合法的向前引用。
二、分支控制
介绍:让程序有选择的执行。
1、单分支
基本语法:
if(条件表达式){
执行代码块; //可以有多条语句
}
说明:当条件表达式为true时,就会执行{ }内的代码,如果为false,就不会执行;
如果{ }只有一条语句时可以不写{ },但是建议写上,代码更清晰。
流程图:
//举例
import java.util.Scanner;
public class lx0016{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年龄");
int age = myScanner.nextInt();
if(age > 18){
System.out.println("你年龄大于18岁,已成年!");
}
System.out.println("程序继续...");
}
}
2、双分支
基本语法:
if(条件表达式){
执行代码块1;
} else {
执行代码块2;
}
说明:当条件表达式成立,执行代码块1,否则执行代码块2;
如果执行的代码块只有一条语句,则{ }可以省略。
流程图:
import java.util.Scanner;
public class lx0016{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年龄");
int age = myScanner.nextInt();
if(age > 18){
System.out.println("你年龄大于18岁,已成年!");
}else{
System.out.println("你未成年……")
}
System.out.println("程序继续...");
}
}
3、多分支
基本语法:
if(条件表达式1){
执行代码块1;
}
else if(条件表达式2){
执行代码块2;
}
……
else{
执行代码块n;
}
说明:
a)当条件表达式1成立,执行代码块1;
b)如果表达式1不成立,才去判断表达式2是否成立;
c)如果表达式2成立,就执行代码块2;
d)以此类推,如果所有表达式都不成立,则执行else的代码块。
注意:只能有一个执行入口!
流程图:
4、嵌套分支
在一个分支结构中又完整的分支结构;
里面的分支的结构称为内层分支,外面的分支结构称为外层分支;
规范:不要超过三层(可读性不好)。
基本语法:
if(){
if(){
if-else...
}else{
if-else...
}
}
5、switch分支结构
基本语法:
switch(表达式){
case 常量1:
语句块1;
break; //结束switch
case 常量2:
语句块2;
break;
...
case 常量n:
语句块n;
break;
default: //一个常量都没有匹配上就执行该语句块
default语句块;
break;
}
switch注意事项和细节:
a)表达式数据类型,应和case后的常量类型保持一致,或者是可以自动转成可以相 互比较的类型,比如:输入的是字符,而常量是int;
b)switch(表达式)中表达式的返回值必须是:byte、short、int、char、enum、 String;
c)case子句中的值必须是常量,而不能是变量;
d)default子句是可选的,当没有匹配的case时,执行default;
e)break语句用来在执行完一个case分支后使程序跳出switch语句块,若没有写 break,程序会执行到switch结尾。
流程图:
import java.util.Scanner;
public class lx0019{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g):");
char a = myScanner.next().charAt(0);
switch(a){
case 'a':
System.out.println("今天星期一");
break;
case 'b':
System.out.println("今天星期二");
break;
case 'c':
System.out.println("今天星期三");
break;
case 'd':
System.out.println("今天星期四");
break;
case 'e':
System.out.println("今天星期五");
break;
case 'f':
System.out.println("今天星期六");
break;
case 'g':
System.out.println("今天星期日");
break;
default:
System.out.println("输入字符不正确,没有匹配的");
}
}
}
三、循环控制
介绍:使代码循环进行。
1、for循环控制
基本语法:
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(语句);
}
注意细节:
a)循环条件是返回一个布尔值的表达式
b)for(;循环判断条件;)中的初始化和变量迭代可以写到其他地方,但;不可省略;
c)循环初始值可以有多条初始化语句,但要求类型一样,中间用逗号隔开;
d)循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开;
e)for(;;){}表示无限循环。
流程图:
import java.util.Scanner;
public class lx0021{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("输入开始值:");
int start = myScanner.nextInt();
System.out.println("输入结束值:");
int stop = myScanner.nextInt();
System.out.println("输入倍数:");
int a = myScanner.nextInt();
int count = 0;
int sum = 0;
for(int i = start; i <= stop; i++){
if(i%a == 0){
System.out.println("i=" + i);
count++;
sum = sum + i;
}
}
System.out.println("count=" + count);
System.out.println("sum=" + sum);
}
}
2、while循环控制
基本语法:
循环变量初始化;
while(循环条件){
循环体(语句);
循环变量迭代;
}
while循环也有四要素,只是四要素位置不同。
流程图:
import java.util.Scanner;
public class lx0022{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("输入开始值:");
int start = myScanner.nextInt();
System.out.println("输入结束值:");
int stop = myScanner.nextInt();
System.out.println("输入倍数:");
int a = myScanner.nextInt();
int count = 0;
int sum = 0;
int i = start;
while(i <= stop){
if(i%a == 0){
System.out.println("i=" + i);
count++;
sum = sum + i;
}
i++;
}
System.out.println("count=" + count);
System.out.println("sum=" + sum);
}
}
3、do_while循环控制
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
说明:
a)do while是关键字;
b) 也有循环四要素,只是位置不一样;
c)先执行,再判断:一定会执行一次。
流程图:
public class lx0023{
public static void main(String[] args){
int i = 0;
int a = 0;
do{
if(i % 5 == 0 && i % 3 !=0){
System.out.println("i=" + i);
a++;
}
i++;
}while(i <= 200);
System.out.println("共有" + a + "个");
}
}
4、循环嵌套练习代码
统计三个班成绩情况
import java.util.Scanner;
public class lx0024{
public static void main(String[] args){
//统计三个班及格人数情况
Scanner myScanner = new Scanner(System.in);
int passNum = 0;
double allsum = 0;
for(int i = 1; i <= 3; i++){
System.out.println("请输入" + i + "班成绩");
double sum = 0;
for(int j = 1; j <= 5; j++){
System.out.println(i + "班第" + j + "个同学成绩为:");
int score = myScanner.nextInt();
sum = sum + score;
allsum = allsum + score;
if(score >= 60)
passNum++;
}
System.out.println(i + "班总成绩为" + sum + ",平均成绩为" + sum/5);
}
System.out.println("年级及格人数为:" + six + ",年级平均成绩为:" + allsum/15); }
}
九九乘法表
import java.util.Scanner;
public class lx0024{
public static void main(String[] args){
//九九乘法表
for(int i = 1;i <= 9; i++){
for(int j = 1;j <=i; j++){
System.out.print(j + " * " + i + " = " + i*j + "\t");
}
System.out.println("\n");
}
}
}
空心金字塔
import java.util.Scanner;
public class lx0024{
public static void main(String[] args){
//打印空心金字塔
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入要打印金字塔的层数:");
int a = myScanner.nextInt();
for(int i = 1;i <= a; i++){
for(int k = 1; k <= a - i; k++)
System.out.print(" ");
for(int j = 1;j <= 2 * i - 1; j++){
if(j == 1 || j == 2 * i - 1 || i = a){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
四、跳转控制语句break、continue和return
1、break
基本介绍:break语句用于终止某个语句块的执行,一般使用在switch或者三种循环中。
基本语法:
{
……;
break;
……;
}
注意事项和细节说明:
a)break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止哪一层语句 块;
b)实际开发尽量不要使用(可读性会变差);
c)label1: ...... --> break label1; ;
d)如果break后面没有指定标签,默认最后一个标签。
import java.util.Scanner;
public class lx0026{
public static void main(String[] args){
for(int i = 0; i < 10; i++){
if(i == 3){
break;
}
System.out.println("i=" + i);
}
}
}
2、continue
基本介绍:continue语句用于结束本次循环,继续执行下一次循环
也可以通过标签指明要跳过的是那一层循环。
基本语法:
{
……;
continue;
……;
}
public class lx0027{
public static void main(String[] args){
int i = 1;
while(i <= 4){
i++;
if(i == 2){
continue;
}
System.out.println("i=" + i);
}
}
}
3、return
基本介绍:return表示跳出所在的方法。
注意:如果在main方法里表示直接跳出程序。
代码自己手动敲一遍理解更深哦!