Java基础之流程控制

Java的流程控制

顺序结构,选择结构,循环结构。

if选择结构,switch case选择结构;while循环,do while循环,for循环

1.1 顺序结构

在程序运行中,最简单的便是顺序结构,程序运行都是从上到下都是一步一步执行的,这更符合顺序两个字。

1.2 选择结构

根据条件选择要执行的程序块

  • if单选择结构:判断一件事情是否可行,再去执行
1
2
3
4
5
6
7
8
9
//基本结构:
// if(布尔表达式){要执行的代码}


Scanner sc=new Scanner(System.in);//实例化一个输入
String str=sc.nextLine();//从键盘接收键入的数据并赋给str
if(str.equals("我爱java")){//比较键入的数据是否和equals中的字符串是否相等
System.out.println("比较成功,您输入的是:"+str);
}
  • if双选择结构:判断事情正确执行某段代码,不正确则执行另外一段代码
1
2
3
4
5
6
7
Scanner sc=new Scanner(System.in);//实例化一个输入
String str=sc.nextLine();//从键盘接收键入的数据并赋给str
if(str.equals("我爱java")){//比较键入的数据是否和equals中的字符串是否相等
System.out.println("比较成功,您输入的是:"+str);
}else{
System.out.println("输入的数据不正确");
}
  • if多选择结构:多个条件,分别判断
1
2
3
4
5
6
7
8
9
10
11
Scanner sc=new Scanner(System.in);//实例化一个输入
int grade=sc.nextInt();//从键盘接收键入的数据并赋给grade
if(grade>80){
System.out.println("成绩优秀");
}else if(grade>70&&grade<80){
System.out.println("成绩良好");
}else if(grade>60&&grade<70){
System.out.println("成绩一般");
}else{
System.out.println("成绩不及格");
}
  • if嵌套:可以实现多个条件都成立时才执行语句
1
2
3
4
5
6
7
8
9
10
Scanner sc=new Scanner(System.in);//实例化一个输入
System.out.println("输入名字:");
String name=sc.nextLine();
System.out.println("输入成绩:");
int grade=sc.nextInt();//从键盘接收键入的数据并赋给grade
if(name.euqals("小明")){
if(grade>60){
System.out.println(name+"的成绩是:"+grade);
}
}

**上面的if嵌套意思是输入的名字是小明,才会执行第二个if,如果成绩大于60,会输出 小明的成绩 **

  • **switch case选择结构:**也是多选择结构的另外一种实现方式,判断一个变量与某一值是否相等,每个值称为一个分支。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Scanner sc=new Scanner(System.in);//实例化一个输入
System.out.println("输入成绩等级:");
String grade=sc.nextLine();
switch(grade){
case 'A':
System.out.println("优秀");
break;//注意每条case分支都要加break,否则会出现case穿透,会从开始一直执行到下一个break出现或者执行到default
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("一般");
break;
case 'D':
System.out.println("凑合");
break;
case 'E':
System.out.println("不太行");
break;
default:
System.out.println("你输入的东西是啥???");
}

在switch语句中最值得注意的地方:case穿透问题,即每个分支最后都要有break语句,有时也可根据需求,不加break,让穿透执行下去

1.3 循环结构

  • while循环:是最基本的循环语句,先判断再执行
1
2
3
4
5
6
7
8
//基本结构为
//while(布尔表达式){要循环的语句}
//下面程序是输出0-100
int i=0;
while(i<=100){//只要布尔表达式为True,程序便会一直执行下去
System.out.println(i);
i++//执行完这句之后,继续回到布尔表达式处判断,判断成功循环继续,判断失败循环结束
}
  • do while循环:与while循环最大的区别就是程序会至少执行一次,先执行再判断
1
2
3
4
5
6
7
8
9
10
11
12
13
/*基本结构
do{
代码语句块
}while(布尔表达式);
*/
//下面程序是计算1-100的总和
int i=0;
int sum=0;
do{
sum=sum+i;
System.out.println("sum:"+sum);
i++;
}while(i<=100);
  • **for循环:**结构 for(初始化;布尔表达式;更新){循环体}

> 执行流程:1. 第一次进入for循环,判断布尔表达式是否成立,若成立则执行循环
>
> 2.执行一次循环体之后,更新命令执行主要是对初始化值的变更
>
> 3.再判断表达式是否成立

下面举几个关于for循环的简单的例子:

1
2
3
4
5
6
7
8
//1.请输出1-100,并且每行输出三个
for(int i=1;i<=100;i++){//每次判断成功执行循环体后,会执行i++,然后再执行判断
if(i%3==0){
System.out.print(i+"\n");
}else {
System.out.print(i+"\t");
}
}
1
2
3
4
5
6
7
8
9
10
11
//2.打印0-100以内奇数、偶数的和
int oddSum=0;//奇数和初始化
int evenSum=0;//偶数和初始化
for (int i = 0; i <=100; i++) {//每次判断成功执行循环体后,会执行i++,然后再执行判断
if(i%2==0){
evenSum+=i;
}else{
oddSum+=i;
}
}
System.out.println("奇数的和为:"+oddSum+"\n偶数的和为:"+evenSum);
1
2
3
4
5
6
7
8
9
//3.打印1-1000能被5整除的数,并且每行输出三个
for (int i = 1; i <= 1000; i++) {//每次判断成功执行循环体后,会执行i++,然后再执行判断
if (i%5==0){
System.out.print(i+"\t");
if (i%(3*5)==0){
System.out.println();
}
}
}
1
2
3
4
5
6
7
//4.打印99乘法表
for (int i = 1; i <= 9; i++) {//每次判断成功执行循环体后,会执行i++,然后再执行判断
for (int j = 1; j <= i; j++) { //j和i比较,来控制每行输出个数不超过i个,可以得出乘法表的格式
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
//5.打印一个三角形
for (int i=1; i<=7; i++) {//控制三角形的大小
for (int j = 7; j>=i; j--) {//控制每行应该输出的空格数
System.out.print(" ");
}
for (int z = 1; z <=i ; z++) {//控制三角形的每行左半生成
System.out.print("*");
}
for (int f =1; f < i; f++) {//控制三角形每行的右半生成
System.out.print("*");
}
System.out.println();//换行
}
  • 增强的for循环,常用在遍历集合或者数组,可以直接定义一个类型的变量,用来遍历
1
2
3
4
5
//6.增强for循环
int[] num={1,2,3,4,5,6,7,8,9};
for (int i : num) {
System.out.println(i);
}
  • break 在任何循环语句的主体部分,都可以用break语句,用于强行结束循环,不再执行下面的语句!

  • continue 用在任何循环语句的主体部分,一般用于结束本次循环,跳过下面的语句,开启下一次的循环。

  • goto关键字 在java中是没有这个关键字的,但是有类似用法,就是带标签的continue和break


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!