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

来源:互联网 发布:淘宝网怎么刷单挣钱 编辑:程序博客网 时间:2024/06/10 16:50
流程控制

选择结构(分支语句)

分支语句根据一定的条件有选择地执行或跳过特定的语句
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     System.out.println(x);                

 

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     System.out.println(month + "月" + day + "日是 2017 年的第" + days + "天");     

 

循环结构

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


循环语句分类


for 循环
while 循环
do/while 循环


for 循环语句


语法格式

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

for循环执行步骤


应用举例

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          * 1616          * 17          * 2  818          * 319          * 4  420          * 5 21          * 722          * 8  223          */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   9839 }

 

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 0
原创粉丝点击