Java基础学习(04Java程序控制)

    本章内容主要为Java程序控制,包括:循环控制、判断控制和跳转控制。

循环控制:

    循环从字面理解就是重复做某一件事,在程序中当某一条件成立时,程序重复执行一条或多条语句,直到循环条件不成立时结束。循环语句也称为迭代语句,在使用过程中需要小心,死循环不是我们期待的效果。

    while循环:

    while循环是一种最基本的循环语句,循环条件只接受布尔值(也就是真或假),当条件为真时程序反复执行循环体中的代码,每次循环验证一次条件,当条件为假时退出循环,执行循环题后面的语句。

  1. while(true)
  2. {
  3.     /*
  4.      * 循环体内的代码
  5.      */
  6. }

    例:while循环(4.1)

  1. package net.miqiang;
  2. /**
  3.  * 例:while循环
  4.  * 一个简单的循环,条件是 i < 5,每循环一次,i 的值增加 1 ,在控制台显示出每次循环 i 的值。
  5.  * 一个稍微复杂点的循环,循环条件是 i < j ,每循环一次 i 的值增加 1 ,j 的值减少 1 ,在控制台显示出每次循环 i 和 j 的值。
  6.  * 
  7.  * @author 米强
  8.  * @version 1.0
  9.  */
  10. public class TestMain {
  11.     /**
  12.      * 构造方法
  13.      * 
  14.      */
  15.     public TestMain() {
  16.         /*
  17.          * 一个简单的循环,条件是 i < 5,每循环一次,i 的值增加 1 ,在控制台显示出每次循环 i 的值。
  18.          */
  19.         int i = 0;
  20.         while (i < 5) {
  21.             i++;
  22.             System.out.println("number: " + i);
  23.         }
  24.         /*
  25.          * 一个稍微复杂点的循环,循环条件是 i < j ,每循环一次 i 的值增加 1 ,j 的值减少 1 ,在控制台显示出每次循环 i 和 j
  26.          * 的值。
  27.          */
  28.         i = 0;
  29.         int j = 20;
  30.         while(i < j){
  31.             i++;
  32.             j--;
  33.             System.out.println("i = " + i + ";/tj = " + j);
  34.         }
  35.     }
  36.     /**
  37.      * 程序入口
  38.      * 
  39.      * @param args
  40.      *            字符串数组参数
  41.      */
  42.     public static void main(String[] args) {
  43.         new TestMain();
  44.     }
  45. }

    do-while循环:

    刚才我们讲到的while循环,从流程上来说是先判断条件,当条件成立再执行语句。而do-while循环则是先执行语句,再判断条件,可想而知,无论条件是否成立,循环体内的语句都将至少执行一次。

  1. do{
  2.     /*
  3.      * 循环体内的语句至少会执行一次
  4.      */
  5. }while(true)

    例:do-while循环(4.2)

  1. package net.miqiang;
  2. /**
  3.  * 例:do-while循环
  4.  * 使用do-while实现一个简单的循环,条件是 i < 5,每循环一次,i 的值增加 1 ,在控制台显示出每次循环 i 的值。
  5.  * 使用do-while实现一个稍微复杂点的循环,循环条件是 i < j ,每循环一次 i 的值增加 1 ,j 的值减少 1 ,在控制台显示出每次循环 i 和 j 的值。
  6.  * 
  7.  * @author 米强
  8.  * @version 1.0
  9.  */
  10. public class TestMain {
  11.     /**
  12.      * 构造方法
  13.      * 
  14.      */
  15.     public TestMain() {
  16.         /*
  17.          * 使用do-while实现一个简单的循环,条件是 i < 5,每循环一次,i 的值增加 1 ,在控制台显示出每次循环 i 的值。
  18.          */
  19.         int i = 0// 如果把 i 的值改为 5 ,试试看结果如何
  20.         do {
  21.             i++;
  22.             System.out.println("number: " + i);
  23.         } while (i < 5);
  24.         /*
  25.          * 使用do-while实现一个稍微复杂点的循环,循环条件是 i < j ,每循环一次 i 的值增加 1 ,j 的值减少 1
  26.          * ,在控制台显示出每次循环 i 和 j 的值。
  27.          */
  28.         i = 0;
  29.         int j = 20;
  30.         do {
  31.             i++;
  32.             j--;
  33.             System.out.println("i = " + i + ";/tj = " + j);
  34.         } while (i < j);
  35.     }
  36.     /**
  37.      * 程序入口
  38.      * 
  39.      * @param args
  40.      *            字符串数组参数
  41.      */
  42.     public static void main(String[] args) {
  43.         new TestMain();
  44.     }
  45. }

    for循环:

    for循环是使用率较高的一种循环语法,基本格式如下:

  1. for(initialization; condition; iteration) {
  2.     /*
  3.      * 循环体语句
  4.      */
  5. }

    initialization:初始化变量,变量为int类型;

    condition:控制条件,表达式值为boolean类型;

    iteration:迭代部分,最常见的是对变量的++操作或--操作。

    注:for循环语法中,只要括号内两个分号“;”存在就能运行,但是程序会陷入死循环。

  1. for( ; ; )
  2. {
  3.     // 死循环
  4. }

    for循环还可以写成这样:

  1. for( ; true; )
  2. {
  3.     // 死循环
  4. }

    例:for循环(4.3)

  1. package net.miqiang;
  2. /**
  3.  * 例:for循环
  4.  * 一个基本的 for 循环
  5.  * 一个经过演化的 for 循环
  6.  * 
  7.  * @author 米强
  8.  * @version 1.0
  9.  */
  10. public class TestMain {
  11.     /**
  12.      * 构造方法
  13.      * 
  14.      */
  15.     public TestMain() {
  16.         /*
  17.          * 一个基本的 for 循环
  18.          */
  19.         for(int i = 0; i < 5; i++){
  20.             System.out.println("* number: " + i);
  21.         }
  22.         
  23.         /*
  24.          * 一个经过演化的 for 循环
  25.          */
  26.         int i = 0;
  27.         boolean b = true;
  28.         for( ; b; ){
  29.             System.out.println("> number: " + i);
  30.             if(i >= 5){
  31.                 b = false;
  32.             }
  33.             i++;
  34.         }
  35.     }
  36.     /**
  37.      * 程序入口
  38.      * 
  39.      * @param args
  40.      *            字符串数组参数
  41.      */
  42.     public static void main(String[] args) {
  43.         new TestMain();
  44.     }
  45. }

    例:运用for循环在控制台打印“九九乘法表”(4.4)(本章源码包中)

 

    for-each循环:

    自Java5.0后,出现了for-each形式循环,格式如下:

  1. for ( type  itr-var : collection )
  2. {
  3.     // 循环体
  4. }

    type:类型;

    itr-var:迭代变量名;

    collection:需要循环的集合。

 

    例:for-each循环(4.5)

  1. package net.miqiang;
  2. import java.util.Vector;
  3. /**
  4.  * 例:for-each循环
  5.  * 使用 for-each 循环遍历数组中的每个元素。
  6.  * 
  7.  * @author 米强
  8.  * @version 1.0
  9.  */
  10. public class TestMain {
  11.     /**
  12.      * 构造方法
  13.      * 
  14.      */
  15.     public TestMain() {
  16.         // int 型数组
  17.         int [] intArr = {3801951452625217410193};
  18.         // String 型数组
  19.         String [] strArr = {"a""b""c""d""e"};
  20.         // 遍历 int 型数组的每个元素
  21.         for(int i : intArr){
  22.             System.out.println(i);
  23.         }
  24.         // 遍历 String 型数组的每个元素
  25.         for(String str : strArr){
  26.             System.out.println(str);
  27.         }
  28.         // 声明一个 Vector 向量
  29.         Vector<String> v = new Vector<String>();
  30.         // 通过循环给 Vector 向量添加 10 个元素
  31.         for(int i = 0; i < 10; i++){
  32.             v.add("Vector_" + i);
  33.         }
  34.         // 遍历这个 Vector 向量的所有元素值
  35.         for(Object o : v){
  36.             System.out.println(o);
  37.         }
  38.     }
  39.     /**
  40.      * 程序入口
  41.      * 
  42.      * @param args
  43.      *            字符串数组参数
  44.      */
  45.     public static void main(String[] args) {
  46.         new TestMain();
  47.     }
  48. }

判断语句:

    Java提供了两种判断语句,if语句和switch语句。

    if语句:

    if语句语法如下:

  1. if ( condition ) {
  2.     // 语句 1
  3. else {
  4.     // 语句 2
  5. }

    condition:代表条件表达式,值为boolean类型,当值为true时执行语句1的代码,当值为false时执行语句2中的代码。

    if语句可以省略else和其后的语句块。

  1. if ( condition ) {
  2.     // 语句
  3. }

    if语句可以嵌套运算:

  1. if ( condition1 ) {
  2.     if ( condition2 ) {
  3.         // 语句块1
  4.     } else {
  5.         // 语句块2
  6.     }
  7. }

    if语句还可以支持多条件来选择执行某一操作,由一个if,若干个else if和else构成:

  1. if ( condition1 ) {
  2.     // 如果条件1成立,执行这里
  3. else if ( condition2 ){
  4.     // 否则,如果条件2成立,执行这里
  5. else if ( condition3 ){
  6.     // 否则,如果条件3成立,执行这里
  7. else {
  8.     // 否则执行这里(以上条件均不成立)
  9. }

    例:if语句(4.6)

  1. package net.miqiang;
  2. /**
  3.  * 例:if语句
  4.  * 演示最基本的 if 语句
  5.  * 演示嵌套 if 语句
  6.  * 演示多条件 if 语句
  7.  * 
  8.  * @author 米强
  9.  * @version 1.0
  10.  */
  11. public class TestMain {
  12.     /**
  13.      * 构造方法
  14.      * 
  15.      */
  16.     public TestMain() {
  17.         /*
  18.          * 演示最基本的 if 语句。
  19.          */
  20.         int i = 10;
  21.         int j = 5;
  22.         if(i < j){
  23.             i = 0;
  24.         }else{
  25.             j = 0;
  26.         }
  27.         System.out.println("i = " + i + ";/tj = " + j);
  28.         
  29.         /*
  30.          * 演示嵌套 if 语句
  31.          */
  32.         if(j == 0){
  33.             if(i == 0){
  34.                 i++;
  35.             }else{
  36.                 j++;
  37.             }
  38.         }
  39.         System.out.println("i = " + i + ";/tj = " + j);
  40.         
  41.         /*
  42.          * 演示多条件 if 语句
  43.          */
  44.         if(i < 3){
  45.             System.out.println("i < 3");
  46.         }else if(i < 6){
  47.             System.out.println("i < 6 AND i >= 3");
  48.         }else if(i < 9){
  49.             System.out.println("i < 9 AND i >= 6");
  50.         }else{
  51.             System.out.println("i >= 9");
  52.         }
  53.     }
  54.     /**
  55.      * 程序入口
  56.      * 
  57.      * @param args
  58.      *            字符串数组参数
  59.      */
  60.     public static void main(String[] args) {
  61.         new TestMain();
  62.     }
  63. }

    switch语句:

    switch语句是多分支选择语句,格式如下:

  1. switch ( expression ) {
  2.     case  value1:
  3.         // 语句1
  4.         break;
  5.     ……
  6.     case  valueN:
  7.         // 语句N
  8.         break;
  9.     default:
  10.         // 语句default
  11. }

    switch语句后面括号中的表达式值一定为一个整型或字符型变量,value1~valueN也必须对应为整型或字符型。switch语句执行时使用expression值从value1开始对比,遇到相同值则执行case value后面的语句,碰到break语句停止。如果测试完所有value值都不相等,则执行default后面的语句。

    例:某校考试,需要对所有学生成绩进行分组,0~59分为“差组”,60~79分为“良组”,80~100分为“优组”(4.7)(实例在本章源码包中)

 

跳转控制:

    Java提供了三种跳转控制语句,break语句、continue语句和return语句。

    break语句:

    break语句为跳出语句,除了和switch语句结合使用外,还可以用来跳出循环。

    

    例:break语句(4.8)

  1. package net.miqiang;
  2. /**
  3.  * 例:break语句
  4.  * 示范 break 语句强制跳出循环
  5.  * 
  6.  * @author 米强
  7.  * @version 1.0
  8.  */
  9. public class TestMain {
  10.     /**
  11.      * 构造方法
  12.      * 
  13.      */
  14.     public TestMain() {
  15.         // 记录循环次数的变量 i
  16.         int i = 0;
  17.         // 开始循环
  18.         while(true){
  19.             System.out.println("i = " + i + ";");
  20.             i++;
  21.             // 如果 i 的值大于 10 ,则使用 break 语句强制跳出循环体
  22.             if(i > 10){
  23.                 break;
  24.             }
  25.         }
  26.         // 将完成信息显示到控制台中
  27.         System.out.println("循环已完成!");
  28.     }
  29.     /**
  30.      * 程序入口
  31.      * 
  32.      * @param args
  33.      *            字符串数组参数
  34.      */
  35.     public static void main(String[] args) {
  36.         new TestMain();
  37.     }
  38. }

    continue语句:

    在循环中碰到了continue语句后,程序将不再执行continue语句之后的语句,改而重新判断循环条件。

    例:continue语句(4.9)

  1. package net.miqiang;
  2. /**
  3.  * 例:continue语句
  4.  * 示范 continue 语句,使程序不再执行 continue 之后的语句,转而重新判断循环条件。
  5.  * 
  6.  * @author 米强
  7.  * @version 1.0
  8.  */
  9. public class TestMain {
  10.     /**
  11.      * 构造方法
  12.      * 
  13.      */
  14.     public TestMain() {
  15.         // 使用 for 循环显示由 0~9 行字符串
  16.         for(int i = 0; i < 10; i++){
  17.             // 显示 start 字符
  18.             System.out.print("start/t");
  19.             // 显示行号
  20.             System.out.print("i = " + i + ";");
  21.             // 如果行号为双数
  22.             if(i % 2 == 0){
  23.                 // 换行
  24.                 System.out.print("/n");
  25.                 // 不再执行 continue 之后的语句,转而重新判断循环条件
  26.                 continue;
  27.             }
  28.             // 显示该行结束字符
  29.             System.out.print("/tend/n");
  30.         }
  31.         // 将完成信息显示到控制台中
  32.         System.out.println("循环已完成!");
  33.     }
  34.     /**
  35.      * 程序入口
  36.      * 
  37.      * @param args
  38.      *            字符串数组参数
  39.      */
  40.     public static void main(String[] args) {
  41.         new TestMain();
  42.     }
  43. }

    return语句:

    程序中碰到了return语句,程序将不再执行return语句之后的任何语句。

    例:return语句(4.10)

  1. package net.miqiang;
  2. /**
  3.  * 例:return语句
  4.  * 示范使用 return 语句中断程序执行流程。
  5.  * 
  6.  * @author 米强
  7.  * @version 1.0
  8.  */
  9. public class TestMain {
  10.     /**
  11.      * 构造方法
  12.      * 
  13.      */
  14.     public TestMain() {
  15.         // 使用 for 循环显示由 0~9 行字符串
  16.         for(int i = 0; i < 10; i++){
  17.             // 显示行号
  18.             System.out.println("i = " + i + ";");
  19.             // 如果行号大于 5
  20.             if(i > 5){
  21.                 // 使用 return 语句中断程序执行流程
  22.                 return;
  23.             }
  24.         }
  25.         // 将完成信息显示到控制台中
  26.         System.out.println("循环已完成!");
  27.     }
  28.     /**
  29.      * 程序入口
  30.      * 
  31.      * @param args
  32.      *            字符串数组参数
  33.      */
  34.     public static void main(String[] args) {
  35.         new TestMain();
  36.     }
  37. }

 

本章实例:

    编程计算某日期是该年度的第几天,要求判断月与日是否符合日期规范,并需要考虑闰年的二月问题。(4.11)(本章源码包中)

 

本章源码包下载:

http://download.csdn.net/source/631920

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值