0
点赞
收藏
分享

微信扫一扫

Java 基本语法----流程控制


流程控制


选择结构(分支语句)

分支语句根据一定的条件有选择地执行或跳过特定的语句
Java分支语句分类
  if-else 语句
  switch 语句
if-else语句语法格式


if(布尔表达式){
语句或语句块;
}
if(布尔表达式) {
语句或语句块;
}
else if(布尔表达式){
语句或语句块;
}else {
语句或语句块;
}


 

if-else语句应用举例


1 public class TestAge{
2   public static void main(String args[]){
3    TestAge t = new TestAge();
4    t.age(75);
5   }
6   public void age(int age){
7   if (age< 0) {
8    System.out.println("不可能!");
9   }else if(age>250){
10    System.out.println("是个妖怪!");
11   }else {
12    System.out.println("此人芳龄 " + age);
14   }
15 }


 


1 //若 age <= 8, 打印 "没上学"
2 //若 age <= 14, 打印出 "小学生"
3 //若 age <= 17, 打印 "初中生"
4 //若 age <= 20, 打印 "高中生"
5 //若 age <= 24, 打印 "大学生"
6 //若都不满足, 打印 "大学毕业"
7
8 int age = 5;
9
10 if(age <= 8) {
11 System.out.println("没上学");
12 }
13 if(age <= 14) {
14 System.out.println("小学生");
15 }else if(age <= 17){
16 System.out.println("初中学");
17 }else if(age <= 20){
18 System.out.println("高中生");
19 }else if(age <= 24){
20 System.out.println("大学生");
21 }else{
22 System.out.println("大学毕业");
23 }


 

if语句练习

1、编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。

 


1     System.out.println("请输入三个整数.");
3 Scanner scanner = new Scanner(System.in);
4
5 System.out.print("num1=");
6 int num1 = scanner.nextInt();
7
8 System.out.print("num2=");
9 int num2 = scanner.nextInt();
10
11 System.out.print("num3=");
12 int num3 = scanner.nextInt();
13
14 System.out.println("您输入的三个整数分别为: " + num1 + ", " + num2 + ", " + num3);
15
16 if(num1 <= num2){
17 if(num3 <= num1){
18 System.out.println(num3 + ", " + num1 + ", " + num2);
19 }else if(num3 >= num2){
20 System.out.println(num1 + ", " + num2 + ", " + num3);
21 }else{
22 System.out.println(num1 + ", " + num3 + ", " + num2);
23 }
25 }else{
26 if(num3 <= num2){
27 System.out.println(num3 + ", " + num2 + ", " + num1);
28 }else if(num3 >= num1){
29 System.out.println(num2 + ", " + num1 + ", " + num3);
30 }else{
31 System.out.println(num2 + ", " + num3 + ", " + num1);
32 }
33


 

2、对下列代码,若有输出,指出输出结果。


1 int x=2;
2 int y=3;
3 if(x>2) {
4 if(y>2) {
5 int z=x+y;
6 System.out.println("z is " + z);
7 }
8 }else {
9 System.out.println("x is " + x);
10


 

switch语句语法格式


switch(表达式){
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
case 常量N:
语句N;
break;
[default:
语句;
break;]
}


switch语句应用举例


1 public class Test{
2 public static void main(String args[]){
3 int i = 1;
4 switch (i) {
5 case 0:
6 System.out.println("zero");
7 break;
8 case 1:
9 System.out.println("one");
10 //break;
11 default:
12 System.out.println("default");
13 break;
14 }
15 }
16


 

switch语句有关规则

switch(表达式)中表达式的返回值必须是下述几种类型之一:int, byte, char, short, 枚举, 字符串;
case子句中的值必须是常量,且所有case子句中的值应是不同的;
default子句是任选的;
break语句用来在执行完一个case分支后使程序跳出switch语句块;

 

switch语句练习

1、使用switch语句改写下列if语句:


1 /*
2 int a = 3;
3 int x = 100;
4 if(a==1)
5 x+=5;
6 else if(a==2)
7 x+=10;
8 else if(a==3)
9 x+=16;
10 else if(a==4)
11 x+=34;
12 */
13
14 int a = 3;
15 int x = 100;
16
17 switch(a){
18 case 1:
19 x += 5;
20 break;
21 case 2:
22 x += 10;
23 break;
24 case 3:
25 x += 16;
26 break;
27 case 4:
28 x += 34;
29 break;
30 }
31


 

2、编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:

  score>=90 等级:A

  70=<score<90 等级: B

  60=<score<70 等级: C

  score<60 等级:D


1 /*
2 编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:
3 score>=90 等级:A
4 70=<score<90 等级: B
5 60=<score<70 等级: C
6 score<60 等级:D
7 */
8 Scanner scanner = new Scanner(System.in);
9 System.out.print("请输入学生的学习成绩, score=");
10 int score = scanner.nextInt();
11
12 switch(score/10){
13 case 10:
14 case 9:
15 System.out.println("A");
16 break;
17
18 case 8:
19 case 7:
20 System.out.println("B");
21 break;
22
23 case 6:
24 System.out.println("C");
25 break;
26
27 default:
28 System.out.println("D");
29


 

3、输入 2017 年的某个月份和日期, 例如 month=4, day=21
  经过程序计算, 打印出输入的月份和日期是 2017 年的第几天. 31+28+31+21


1 /*
2 * 输入 2017 年的某个月份和日期, 例如 month=4, day=21
3 * 经过程序计算, 打印出输入的月份和日期是 2017 年的第几天. 31+28+31+21
4 */
5 System.out.print("month:");
6 int month = scanner.nextInt();
7
8 System.out.print("day:");
9 int day = scanner.nextInt();
10
11 int days = day;
12
13 switch(month - 1) {
14 case 11:
15 days += 30;
16 case 10:
17 days += 31;
18 case 9:
19 days += 30;
20
21 case 8:
22 days += 31;
23 case 7:
24 days += 31;
25 case 6:
26 days += 30;
27 case 5:
28 days += 31;
29
30 case 4:
31 days += 30;
32 case 3:
33 days += 31;
34 case 2:
35 days += 28;
36 case 1:
37 days += 31;
38 }
39


 

循环结构

循环语句功能
在循环条件满足的情况下,反复执行特定代码
循环语句的四个组成部分
  初始化部分(init_statement)
  循环条件部分(test_exp)
  循环体部分(body_statement)
  迭代部分(alter_statement)

循环语句分类

for 循环
while 循环
do/while 循环

for 循环语句

语法格式

for (初始化表达式; 布尔值测试表达式; 更改表达式){
  语句或语句块;

for循环执行步骤

Java 基本语法----流程控制_switch

应用举例


public class ForLoop {
public static void main(String args[]){
int result = 0;
for(int i=1; i<=100; i++) {
result += i;
}
System.out.println("result=" + result);
}
}


 

for语句练习

1、从 1 打印到 100;打印 1-100 之间的所有偶数


1 public class TestFor {
2 public static void main(String [] args) {
3 //从 1 打印到 100
4 /*
5 for(int i = 1; i <= 100; i++) {
6 System.out.println(i);
7 }
8 */
9
10 //循环的初始化
11 int i = 1;
12 for(;i <= 100;) {
13 System.out.println(i++);
14 }
15 //打印 1-100 之间的所有偶数.
16 for(int j = 1; j <= 100; j++) {
17 if(j % 2 == 0){
18 System.out.println(j);
19 }
20 }
21


2、编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。

 


for(int j = 1; j <= 150; j++){
System.out.print(j);
if(j % 3 == 0){
System.out.print(" foo");
}
if(j % 5 == 0){
System.out.print(" biz");
}
if(j % 7 == 0){
System.out.print(" baz");
}
System.out.println();
}


 

效果:

 

1
2
3 foo
4
5 biz
6 foo
7 baz

15 foo biz
….
105 foo biz baz

3、打印 1-100 之间的所有素数素数: 有且仅有两个正约数的整数. 即 2 ~ i-1 之间没有一个是其约数. 例如 2, 3, 5, 7, 11, ...


1 public class sushu {
2 public static void main(String[] args) {
3 //打印 1-100 之间的所有素数
4 //素数: 有且仅有两个正约数的整数. 即 2 ~ i-1 之间没有一个是其约数.
5 //例如 2, 3, 5, 7, 11, ...
6 //标记一个整数是素数. true 表示是一个素数, false 表示不是素数.
7 boolean flag = true;
8
9 long begin = System.currentTimeMillis();
10
11 for(int i = 2; i <= 100000; i++){
12 flag = true;
13
14 /**
15 * 16
16 *
17 * 2 8
18 * 3
19 * 4 4
20 * 5
21 * 7
22 * 8 2
23 */
24
25 //从 2 循环到 i-1, 检验每一个数是否为 i 的约数.
26 for(int j = 2; j <= Math.sqrt(i); j++){
27 if(i % j == 0){
28 flag = false;
29 //结束这次循环.
30 break;
31 }
32 }
33 if(flag){
34 System.out.println(i);
35 }
36 }
37 long end = System.currentTimeMillis();
38 System.out.println("time: " + (end - begin)); //2194 98
39


 

while 循环语句

语法格式
[初始化语句]
while( 布尔值测试表达式){
  语句或语句块;
  [更改语句;]
}
应用举例


1 public class WhileLoop {
2 public static void main(String args[]){
3 int result = 0;
4 int i=1;
5 while(i<=100) {
6 result += i;
7 i++;
8 }
9 System.out.println("result=" + result);
10 }
11


do/while 循环语句

语法格式
[初始化语句]
do{
  语句或语句块;
  [更改语句;]
}while(布尔值测试表达式);

应用举例


1 public class WhileLoop {
2 public static void main(String args[]){
3 int result = 0, i=1;
4 do{
5 result += i;
6 i++;
7 }while(i<=100);
8 System.out.println("result=" + result);
9 }
10


 

while、do/while语句练习


int i = 101;
while(i <= 100){
System.out.println(i);
i++;
}

//do ... while 一定会执行一次循环体.
int j = 101;
do{
System.out.println("^^" + j++);
}while(j <= 100);


1、编写程序:求1到100之间所有偶数的和。用for和while语句分别完成。


/*
求1到100之间所有偶数的和。用for和while语句分别完成。
*/
int total = 0;
int m = 1;
while(m <= 100){
if(m % 2 == 0){
total += m;
}
m++;
}
System.out.println(total);


2、编写程序:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

 


/*
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束输入。
*/
Scanner scanner = new Scanner(System.in);

//标记正数的个数
int x = 0;
//标记负数的个数
int y = 0;

while(true){
int b = scanner.nextInt();
if(b > 0){
x++;
}else if(b < 0){
y++;
}else{
//退出循环使用 break 语句.
break;
}
}
System.out.println("正数: " + x);
System.out.println("负数: " + y)


 

 

特殊流程控制语句

break 语句

break语句用于终止某个语句块的执行
{ ……
  break;
  ……
}
break 语句用法举例


public class TestBreak{
public static void main(String args[]){
for(int i = 0; i<10; i++){
if(i==3)
break;
System.out.println(" i =" + i);
}
System.out.println("Game Over!");
}
}


 

break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
label1: { ……
  label2: { ……
    label3: { ……
      break label2;
    ……
    }
  }
}

continue 语句

continue语句用于跳过某个循环语句块的一次执行
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环

continue语句用法举例


1 public class ContinueTest{
2 public static void main(String [] args){
3
4 //continue语句用于跳过某个循环语句块的一次执行
5 for(int i = 1; i <= 100; i++){
6 if(i % 2 != 0){
7 //break和continue之后不能有其他的语句,
8 //因为程序永远不会执行break 和 continue之后的语句。
9 continue;
10 System.out.println("test");
11 }
12 System.out.println(i);
13 }
14


 

特殊流程控制语句说明

break只能用于switch语句和循环语句中。
continue 只能用于循环语句中。
标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
break和continue之后不能有其他的语句,因为程序永远不会执行break 和 continue之后的语句。

举报

相关推荐

0 条评论