3.3 流程控制语句

3.3.1 程序的三种基本流程

简单语句

  • 最简单的语句

    方法调用语句
    赋值语句,注意分号(;)

  • 如:

    System.out.println(“Hello World”);
    a = 3+x;
    b = a>0?a:-a;
    s = TextBox1.getText();
    d = Integer.parseInt( s );

程序的注释

Java中可以采用三种注释方式:

  • // 用于单行注释。注释从//开始,终止于行尾;
  • /* … */ 用于多行注释。注释从/*开始,到*/结束,且这种注释不能互相嵌套;
  • /** … */ 是Java所特有的doc注释。它以/**开始,到*/结束。

JavaDoc

  • 其中,第3种注释主要是为支持JDK工具javadoc而采用的。javadoc能识别注释中用标记@标识的一些特殊变量,并把doc注释加入它所生成的HTML文件。常用的@标记如下。
  •  @see:引用其他类。
  • @version:版本信息。
  • @author:作者信息。
  • @param:参数名说明。
  • @return:说明。
  • @exception:异常说明。
  • 对于有@标记的注释,javadoc在生成有关程序的文档时,会自动地识别它们,并生成相应的文档。
  • 如:
  • 生成:
  • javadoc HelloDate.java

分支语句--if

if(条件表达式)
    语句块; // if分支
else
    语句块; // else分支

例子:

public class LeapYear{
    public static void main( String args[ ] ){
        int year=2003; 
        if( (year%4==0 && year%100!=0) || (year%400==0) )
            System.out.println(year+" is a leap year.");
        else 
            System.out.println(year+" is not a leap year.");
    }
}

分支语句--switch语句

  • 使用switch要注意:

    变量类型是整数、字符、字符串(String)
    case后面是常量
    注意break

例子:

public class GradeLevel{
    public static void main( String args[ ] ){
        System.out.println("\n**** first situation ****");
        char grade='C'; 
        switch( grade ){
            case 'A' : 
                System.out.println(grade+" is 85~100");
                break;
            case 'B' : 
                System.out.println(grade+" is 70~84");
                break;
            case 'C' : 
                System.out.println(grade+" is 60~69");
                break;
            case 'D' : 
                System.out.println(grade+" is <60");
                break;
            default : 
                System.out.println("input error");
        }
    }
}

 IDE中的窗体设计

  • Eclipse中

    项目上点右键 New—Other—Windows Builder—Swing Designer—Jframe

    在窗体上右键,Layout,(absolute)

    加上按钮等组件,设置其属性

    组件上右键,Add New Event Handler

  • Netbeans类似

    新建—Other—Swing GUI窗体

    布局可设为null

循环语句

  • 循环语句功能

    在循环条件满足的情况下,反复执行特定代码

  • 循环的五个要素

    初始化部分(init_statement)
    循环条件部分(test_exp)
    循环体部分(body_statement)
    迭代部分(alter_statement)
    结束后处理

循环语句的三种写法

for 循环语句

语法格式
    for (init_statement; test_exp; alter_statement){
        body_statement
    }
应用举例
    intresult = 0;
    for(inti=1; i<=100; i++) {
        result += i;
    }
    System.out.println("result=" + result);

while 循环语句

语法格式
        [init_statement]
        while( test_exp){
            body_statement;
            [alter_statement;]
        }
应用举例
        intresult = 0;
        inti=1;
        while(i<=100) {
            result += i;
            i++;
        }
        System.out.println("result=" + result);
注意不要死循环

do/while 循环语句

语法格式
    [init_statement]
    do{
        body_statement;
        [alter_statement;]
    }while( test_exp);

应用举例
    intresult = 0, inti=1;
    do{
        result += i;
        i++;
    }while(i<=100);
System.out.println("result=" + result);

例子:

import java.awt.*;
import javax.swing.*;

public class Circle99Frame extends JFrame
{
    public static void main(String[]argv)
    {
        JFrame frame = new Circle99Frame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize( 600, 600 );
        frame.setVisible(true);
    }
    public void paint(Graphics g)
    {    
        g.drawString("circle 99", 20, 20);
        
        int x0 = getSize().width /2;
        int y0 = getSize().height /2;
        
        for( int r=0 ; r<getSize().height/2; r+=10 )
        {
            g.setColor( getRandomColor() );
            g.drawOval( x0-r,y0-r/2, r*2, r*2 );
        } 
        
    }
    Color getRandomColor()
    {
        return new Color(
            (int)( Math.random() * 256 ),
            (int)( Math.random() * 256 ),
            (int)( Math.random() * 256 )
        );
    }
}

Goto语句及其弊端

  • 有关Goto语句的争论
  • Java中的解决方式

    在循环中:break 标号,continue 标号
    其中,在循环前面可以用标号来表明是哪重循环

break语句

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

例子:

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!");
    }
}
 i=0
 i=1
 i=2
Game Over!

continue 语句

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

例子:

public class ContinueTest {
    public static void main(String args[]){
        for (int i = 0; i < 100; i++) {
            if (i%10==0)
                continue;
            System.out.println(i);
        }
    }
}
^^^
94
95
96
97
98
99

特殊流程控制语句

使用break或continue标号

例子:

public class Prime100Continue{
    public static void main( String args[ ] ){
        System.out.println(" **** 100--200的质数 ****");
        int n=0;
        outer: for(int i=101;i<200;i+=2){ //外层循环
            for(int j=2; j<i; j++){ //内层循环
                if( i%j==0 )        //不是质数,则继续外层循环
                    continue outer;
            }
            System.out.print(" "+i);//显示质数
            n++;                    //计算个数 
            if( n<10 )                //未满10个数,则不换行
                continue;    
            System.out.println( );
            n=0;
        }
        System.out.println( );
    }
}
 **** 100--200的质数 ****
 101 103 107 109 113 127 131 137 139 149
 151 157 163 167 173 179 181 191 193 197
 199

(本页内容摘自:https://www.icourse163.org/learn/PKU-1001941004?tid=1002731007#/learn/content?type=detail&id=1003758031&sm=1)

猜你喜欢

转载自www.cnblogs.com/zjcao/p/9194482.html
3.3