Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170212
  • 博文数量: 56
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 650
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-12 10:39
文章分类

全部博文(56)

文章存档

2009年(1)

2008年(55)

我的朋友
最近访客

分类: Java

2008-05-10 00:28:48

 四。流程控制

分支结构:

if-then-else语句、while语句、for语句、switch语句控制Java程序的流程,能够在最合适使用的时候,使用它们。并且知道它们与其它程序设计语言的流程控制之间的不同。

if (逻辑表达式)
{
语句1;
语句2;
……
}

if-then-else结构的if语句格式:

if (逻辑表达式)
{
语句;
}
else
{
语句;
}


循环结构:

while语句是Java语言中提供的一种循环结构的流程控制语句。它的语法格式为:


while (逻辑表达式)
{
语句1;
语句2;
……
}

 
for (循环初始值;循环结束条件表达式;修改表达式)
{
循环体语句;
……
}





1.if...

public class testBranch1
{
 public static void main(String args[])
 {
int myScore=96;
if (myScore >= 90)
System.out.println("Very Good!”);
if (myScore < 90)
System.out.println(“make great efforts!”);
 }
}

if (myScore >= 90)
{
System.out.println("Congratulate to you!”);
System.out.println("You score is very good!”);
}
if (myScore < 90)
System.out.println(“make great efforts!”);


2.if...else...


public class testBranch2
{
public static void main(String args[])
{
int myScore=96;
if (myScore >= 90)
{
System.out.println("Very Good!”);
}
else
{
System.out.println(“make great efforts!”);
}
}
}

 
3.while

testLoop1.java


public class testLoop1
{
public static void main(String args[])
{
int counterLoop=8;
while (counterLoop > 0)
{
System.out.println(counterLoop);
CounterLoop - = 1;
}
}
}

 
4.for...

public class testLoop2
{
public static void main(String args[])
{
for (int counterLoop=8;counterLoop > 0;counterLoop--)
{
System.out.println(counterLoop);
}
}
}


public class whileLianxi
{
String weeks[ ] = {“Monday”,”Tuesday”,”Wednsday”,”Thursday”,”Friday”,”Saturday”,”Sunday”};
int x=0;
public static void main(String args[])
{
while(x<7)
{
System.out.println(weeks[x]);
x++;
}
}
}


 Java语言的控制语句有三种类型,即条件语句、循环语句和转移语句。
条件语句:if 和 switch
    (1) if语句   
        if语句的一般形式:
        if(表达式)
        { 若干语句 }
    else
        { 若干语句 }
if后面( )内的表达式的值必须是boolean型的。如果表达式的值为true,则执行紧跟着的复合语句;如果表达式的值为false,则执行else后面的复合语句。
注:1.if和else后面的复合语句里如果只有一个语句,{ }可以省略不写,但为了增强程序的可读性最好不要省略。
      2.有时为了编程的需要,else或if后面的大括号里可以没有语句。
如:例1。
    if语句的扩充形式为:
 if(表达式1)
    语句1
 else if(表达式)
    语句2
……
 else if(表达式n)
    语句n
例子:求三个数的最大值
  import java.awt.*;
  import java.awt.event.*;
  public class Find
{
      public static void main(String args[])
{
        new FindMax();
}
}
class FindMax extends Frame implements ActionListener\
    {
       Label result;
       TextField in1,in2,in3;
       Button btn;
     int a=0,b=0,c=0,max;
FindMax()
  {
    super(“求三个整数的最大值”);
    result=new Label(“请先输入三个待比较的整数:”);
    in1=new TextField(5);
    in2=new TextField(5);
    in3=new TextField(5);
setLayout(new FlowLayout());
btn=new Button(“比较”);
add(in1);
add(in2);
add(in3);
 add(result);
 add(btn);
 btn.addActionListener(this);
setSize(300,200);
show();
}
public void actionPerformed(ActionEvent e)
{
  a=Integer.parseInt(in1.getText());
  b=Integer.parseInt(in2.getText());
c=Integer.parseInt(in3.getText());
if(a>b)
  if(a>c)
    max=a;
  else
    max=c;
else
   if(b>c)
    max=b;
   else
    max=c;
result.setText(“三个数中最大值是:“+max);
}
}
   (2)switch选择语句
     switch 结构的语法为:
       switch(表达式){
    case '常量值 1':
      语句(组);
      break;
    case '常量值 2':
      语句(组);
      break;
    case '常量值 N':
      语句(组);
      break;
    default: 
      语句(组);
}
switch 语句中表达式的值必须是整型或字符型:常量值1到常量值n必须也是整型或字符型。Switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相同,就执行该case里的若干个语句直到break语句为止。若没有一个常量与表达式的值相同,则执行default后面的若干个语句。Default是可有可无的,如果它不存在,并且所有的常量值都和表达式的值不相同,那么switch语句就不会进行任何处理。
    在同一个switch语句中,case后的常量值必须互不相同。
例子:求某一年月份的天数。
import java.io.*;
class DayCounter
{
    public static void main(String args[]){
    int yearIn=2001;
    int monthIn=2;
    if(args.length>0)
        monthIn=Integer.parseInt(args[0]);
    if(args.length>1)
        yearIn=Integer.parseInt(args[1]);
    System.out.println(monthIn+"/"+yearIn+"has"+countDays(monthIn,yearIn)+"days.");

    }
    static int countDays(int month,int year){
        int count=-1;
        switch(month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                count =31;
            break;
            case 4:
            case 6:
            case 9:
            case 11:
                count=30;
            break;
            case 2:
                if(year%4==0)
                  count=29;
                else
                    count=28;
                if((year%100==0)&(year%400 !=0))
                    count=28;
        }
        return count;
    }

}

循环语句
(1) for循环语句
     for语句格式如下:
     for(表达式1; 表达式2; 表达式3)
     { 若干语句 } //循环体
     注:表达式1负责完成变量的初始化。表达式2是值为boolean型的表达式,称为循环条件。表达式3用来修整变量,改变循环条件。
     for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作;再判断表达式2的值,若表达式2的值为true,则执行循环体;执行完循环体之后紧接着计算表达式3,以便改变循环条件,这样一轮循环就结束了。第二轮计算从计算表达式2开始,若表达式2的值仍为true则继续循环,否则跳出整个for语句执行后面的语句。
例子:排序
   import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Sort extends Applet implements ActionListener
{
    Label prompt=new Label("请输入欲排序的整数数据(最多10个):");
    TextField input=new TextField(5);
    Button sortbtn=new Button("排序");
    int DataArray[]=new int[10];//存放待排序的数据
    int DataCount=0;
    public void init()
    {
        add(prompt);
        add(input);
        add(sortbtn);
        input.addActionListener(this);
        sortbtn.addActionListener(this);
    }
    public void paint(Graphics g)
    {
      for(int k=0;k          g.drawString(Integer.toString(DataArray[k]),10,40+20*k);
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==input)//用户在input中输入并回车时
        {
            DataArray[DataCount++]=Integer.parseInt(input.getText());
            if(DataCount<10)
            {
`
                input.setText("");//准备输入下一个数据
            }
            else
            {
                prompt.setText("已输入10个数据,不能再输入了");
                input.setVisible(false);//隐藏输入区域
            }
        }
        if(e.getSource()==sortbtn)
        {    int temp;
            for(int i=10;i>1;i--)
            {
              for(int j=0;j<9;j++)
               {
                if(DataArray[j]>DataArray[j+1])
                  {
                    temp=DataArray[j];
                    DataArray[j]=DataArray[j+1];
                    DataArray[j+1]=temp;
                  }
               }
            }
            repaint();
        }

    }

}
(2)while循环语句
   一般格式如下:
 while(表达式)
{ 若干语句 }
 do-while循环
一般格式如下:
 do
  { 若干语句 }
 while (表达式);
注:do-while循环和while循环的区别是,do-while的循环体至少被执行一次
 例子:求0到100的累加和
  int sum=0,i=1;
while(i<=100)
{
   sum+=i;
i++;
}
在循环体中使用语句break和语句continue
在一个循环中,如果在某次循环体的执行中执行了break语句,那么整个循环语句就结束。如果在某次循环体的执行中执行了continue语句,那么本次循环就结束,即不再执行本次循环中continue语句后面的语句,而转入下一次循环。
import java.io.*;
class test
{
    public static void main(String[] args)
    {
        int sum=0,i,j;
        for (i=1;i<=10;i++ )
        {
            if(i%2==0)
                continue;
            else {}
                sum=sum+i;
        }
        System.out.println("sum="+sum);
        for(j=2;j<=50;j++)
        {
            for (i=2;i<=j/2 ; i++)
            {
                if(j%i==0)
                    break;
            }
            if(i>j/2)
            {
                System.out.println(""+j+"是素数");
            }
                else
            {}
        }
    }
}




阅读(684) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~