第三讲Java结构化编程

主要内容

分支语句(if-else, switch)

循环语句(while, do-while, for)

循环嵌套和循环控制(break, continue)

简单的Java程序设计

分支语句

通过条件的判断,转向不同的程序流程,以此实现流程控制。

if-else语句

这是最基本的分支语句。

语句形式

if (条件)

语句块1

[else

语句块2]

分支流程说明

说明:

1)if后必须是一个boolean型的数据。

2)else是可选的,如果此时条件为false,则这条语句将不执行具体操作。

2x+1x≥0

练习:求Y=

x+10x<0

if-else语句的扩展形式

扩展形式1

if (条件1 )

if (条件2 )

语句块1

else

语句块2

else

语句块3

扩展形式2

if (条件1 )

语句块1

else if (条件2 )

语句块2

else if(条件3 )

语句块3

else

语句块n

1x>0

练习:求Y=0x=0

-1x<0

switch语句

switch是用基于整型数据的多分支判断

语句形式

switch (表达式) {
case值1:语句块1;
break;
case值2:语句块2;
break;
...
default: default语句块;
break;
}

多分支流程说明

说明:

1)switch后的表达式,必须是byte, char, short或者int型的。

2)表达式的值与case后的值1、值2…进行比较,匹配的情况下流程转向。

3)break是可选的,可用来中断switch语句。

分析和思考:以下程序的作用,可能存在的问题。

import javax.swing.*;
class TestSwitch{
public static void main(String[] aa){
int x;
String s=JOptionPane.showInputDialog("Number?");
x=Integer.parseInt(s);
switch(x){
case 1:s="one";
case 2:s="two";
case 3:s="three";
case 4:s="four";
case 5:s="five";
default:s="other";
}
System.out.println(x+"-----"+s);
}
}

练习:输入一月份,求该月的天数

分析:1,3,5,7,8,10,12----31天

4,6,9,11-----30天

2----28或29天(由年份再确定)

import javax.swing.*;
class Monthdays{
public static void main(String[] aa){
int month;
int days;
String s=JOptionPane.showInputDialog("Month?");
month=Integer.parseInt(s);
}
}

循环语句

程序经常需要重复一些操作。形成重复执行的一组语句称为一个循环。

设计一个循环时,要考虑到循环的终点,否则循环会是无穷尽的。

while语句

条件循环语句形式

while(条件)

语句块

在循环体执行前先判断条件,只要条件成立,循环就继续。

条件循环流程说明

示例:

1.求前100个自然数的和。

2.求1+2+……+N的和(N在程序运行时输入)

do-while语句

do-while循环与while循环很相近,区别只在于先判断还是先执行。

循环语句形式

do

语句块

while(条件);

先执行后判断。条件成立,下一次的循环就又开始。

示例:

1.用do-while改写上面例1。

2.设计一累加器程序Accumulator.java,可用以对用户输入的数据进行累加,当用户输入9999时停止,即显示累加和。

for语句

for循环是一种计数循环,可以设置用来遍历某个范围的值

循环语句形式

for(语句块1;条件;语句块2)

语句块3

用while来改写for循环

语句块1;

while(条件) {

语句块3;

语句块2;

}

先执行后判断!条件成立继续循环。

循环流程分析

[说明]

[1]语句块1循环开始前先执行一次,可用来初始化一个或多个变量,如果是多个各语句间用逗号相间。

[2]条件循环前进行判断,用以确定循环是否继续。

[3]语句块2是一条在每次循环完后执行的语句。

[4]以上三项都是可选的!

示例:

1.求前100个自然数的和。

2.输入一个自然数,求N!。

循环控制和循环嵌套

循环控制

break语句

适用情况:break语句用于switch,for, while,以及do-while语句中。

作用:中断语句,程序流程至这些语句后的第一句。

示例:

1.求前N个自然数的和。

2.输入一个自然数,求N!。

3.求1+2+3+……+N<1000的N的最大数。

4.输入一个自然数,判断该数是否为素数。

Continue语句

适用情况:continue语句用于for, while,以及do-while语句中。

作用:中止当前循环,转到循环的起始处,开始下一次的循环。

示例:

1.改造累加器程序Accumulator.java,使之只对正数进行累加,直到999为止。(999为结束标志,不需加入)

循环嵌套

在解决复杂一些的问题时,需要在循环里继续设置循环语句,这就是循环的嵌套。比如输出一个二维的矩阵,用循环嵌套就很容易解决。

分析如下程序的输出结果

class Matrix {
public static void main( String[] args ){
for( int i=1; i<=3; i++ ) {
for ( int j=1; j<=5; j++)
System.out.print(i*j+"\t");
System.out.println();
}
}
}

练习:用循环嵌套的方法输出如下图案:

*

* *

* * *

* * * *

* * * * *

* * * * *

* * * *

* * *

* *

*

* * * * * * * * *

* * * * * * *

* * * * *

* * *

*

*

* * *

* * * * *

* * * * * * *

* * * * * * * * *

简单的Java程序设计

1、输出一个三角形的九九乘法表

2*、求所有三位数的素数

3、键盘输入一年份,判断并输出是否为闰年

4、显示菲波那契数列的前20项,并求其和。

1,1,2,3,5,8,13………