第三讲 Java结构化编程
主要内容
分支语句(if-else, switch) 循环语句(while, do-while, for) 循环嵌套和循环控制(break, continue) 简单的Java程序设计 |
分支语句
通过条件的判断,转向不同的程序流程,以此实现流程控制。
if-else 语句
这是最基本的分支语句。
语句形式
if ( 条件 ) 语句块1 [else 语句块2] |
分支流程说明
说明:
1) if后必须是一个boolean型的数据。
2) else是可选的,如果此时条件为false,则这条语句将不执行具体操作。
2x+1 x≥0
练习:求Y=
x+10 x<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 |
1 x>0
练习:求Y= 0 x=0
-1 x<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………