四。流程控制
分支结构:
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) |