第三讲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………