Java2-3
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
3.2
循环控制语句
• Java中的循环控制语句有三种,分别是: while,do-while和for语句;
• 循环体内的语句会反复执行,直到控制 布尔表达式的值变为false为止。
14
3.2.1
while语句
• while语句格式: while ( Boolean-Expression ) StatementS 程序示例3-4 略
public class scoreConvert extends Applet{ Label prompt; TextField input; int Excellent,Good,Middle,Pass,Failure;
public void init( ) { prompt=new Label("输入成绩"); input=new TextField(2); add(prompt); add(input); } public void paint(Graphics g) { g.drawString("各等级的人数:",25,40); g.drawString("优秀 : "+Excellent,25,55); g.drawString("良好 : "+Good,25,70); g.drawString("中等 : "+Middle,25,85); g.drawString("及格 : "+Pass,25,100); g.drawString("不通过: "+Failure,25,115); }
22
3. 3.1 不带标号的break语句和continue语句
for( int i=1;i<10;i++) { if(i%3==0) continue; else System.out.println("i = "+i); } for( int i=1;i<10;i++) { if(i%3==0) break; else System.out.println("i = "+i); }
public void init( ) { lab1=new Label("输入第1个整数"); input1=new TextField(10); lab2=new Label("输入第2个整数"); input2=new TextField(10); add(lab1); add(input1); add(lab2); add(input2);
20
3.3
break语句和continue语句
• 不带标号的break和continue语句;
• 带标号的break和continue语句。
21
3. 3.1 不带标号的break语句和continue语句 • break语句可以跳出包含它的最内层的循 环,不再执行剩余的语句; • continue语句停止执行当前的循环,回到 循环处,开始执行下一轮的循环。这些 特性和C/C++的功能一样。
28
用法区别(续)
• break语句的标号也必须位于封闭语句的 前面,但不一定是循环语句。 例如:
outer:{ i=0; for(i=0;i<3;i++) for(j=0;j<3;j++){ System.out.println(i+" "+j); if(j==1) break outer; } } 29
}
}
补充:for循环增强
• for 循环增强语法格式如下:
for (变量类型 变量名:集合变量名) { Statement }
• 注意事项:
可变参数:一个方法 迭代变量必须在( )中定义 接受的参数个数不确 集合变量可以是数组或是实现了Iterable接口的类 定 • 举例:
public int add(int x,int ...args ){ int sum=x; for(int arg:args){ sum+=arg; } return sum; }
15
3.2.2
do-while语句
• do-while语句的语法格式如下: do{ Statement }while (Boolean-Expression ) ; 程序3-5 如下:
16
// 产生一个大于0.9的随机数为止 public class GenerateDoubleNumbers { public static void main(String args[ ]){ double d;
程序3-3需要注意的地方
• 在action()方法中调用的repaint( )方法, 是一个系统方法,它具有自动调用 paint( )方法的能力,从而实现对网页的 刷新。
12
课堂练习题
1、仔细分析下面程序,写出程序的最终运行结果。 public class s_switch { public static void main(String args[]) { int ch=8; int r=10; switch(ch-1){ case 7: r=r+3; 结果是: ? r = 24 case 8: r=r+5; case 9: r=r+6; break; default: ; } System.out.println("r="+r); } }
作业: P49 1—4
31
24
// 程序3-8 public class Hello{ public static void main(String args[ ]){ int i,j=0; outer: for(i=0;i<5;i++) for(j=0;j<5;j++){ System.out.println(i+" "+j); if(j==1) break outer; } System.out.println("最终值:"+i+" "+j); } }
2
3.1 分支语句
• if-else语句; • switch-case语句 。
3
/C++; • 条件表达式必须是布尔类型,例如: 下面的写法在C/C++中是合法的,但在 Java中却是非法的 : int i=10; if ( i )
...
4
程序3-1描述了用applet从文本框获取数据,然 后将比较的结果显示出来。 // 程序 3-1 import java.awt.*; import java.applet.*; public class compareNumbers extends Applet{ Label lab1,lab2; TextField input1,input2; int num1,num2;
public boolean action(Event e , Object o) { int score=Integer.parseInt(input.getText( )); showStatus(""); input.setText(""); switch(score/10) { case 10: case 9: Excellent++; break; case 8: Good++; break; case 7: Middle++; break; case 6: Pass++; break; case 5: case 4: case 3: case 2: case 1: case 0: Failure++; break; default: showStatus("输入有误,重新输入!"); } repaint( ); return true; } }
}
public boolean action(Event e , Object o) { if (e.target==input1 || e.target==input2) { num1=Integer.parseInt(input1.getText( )); num2=Integer.parseInt(input2.getText( )); if(num1<num2) showStatus(num1 + " < " + num2); else if (num1>num2) showStatus(num1+" > "+num2); else showStatus(num1+" == "+num2); } return true; }
312switchswitch后面的表达式类型必须是字符类型或整形程序33采用小程序实现将学生的百分制成绩转换为优良中及格和不通过五个等级
第3章 控制语句
本章主要讲述内容
• • • • Java的分支语句; 循环控制语句; break和continue语句; 带标号的break和continue语句。
18
// 程序3-6输出一个*三角形 public class printGraphics extends Applet{ public void paint(Graphics g) { int xpos,ypos=0;
for(int row=6;row>=1;row--) { xpos=25; ypos+=15; for(int column=1;column<=row;column++) { g.drawString("*",xpos,ypos); xpos+=7; } }
程序运行结果: 0 0 0 1 最终值:0 1
如 果 将 上 述 程 序 中 的 break outer修改为continue outer, 再次运行该程序,结果如下: 0 0 0 1 1 0 1 1 2 0 2 1 最终值:3 1
这两个带标号语句的共同点
• 都必须用在循环中,用于流程控制;
• 执行这两个语句时,若后面还有其它语 句,将不在继续执行。
结果 ?
23
3. 3.2 带标号的break语句和continue语句 • 当在循环中执行带标号的break语句时,可 以立即退出任意多个嵌套循环。语法格式: break Identifier; • 当在循环中执行带标号的continue语句时, 可以将控制转移到标号的地方,开始下一轮 的循环。语法格式:continue Identifier; • 程序3-8 给出了带标号的break语句用法。
27
这两个带标号语句在用法上的区别
• continue语句的标号必须位于封闭的循环 语句的前面。如下用法就是错误的:
outer: { i=0; for(i=0;i<3;i++) for(j=0;j<3;j++){ System.out.println(i+" "+j); if(j==1) continue outer; } }
do{
d=Math.random( ); System.out.println(d); }while (d<0.9); }
作业: 随机产生26个英文字母 a~z,直到大于u为止。 用while和for语句实现。
}
3.2.3
for语句
• for语句语法格式如下:
for ( ForInitopt ; Boolean-Expression ; ForUpdateopt ) Statement
}
3.1.2
switch 语句
• switch语句的语法结构 同C/C++; • switch后面的表达式类型必须是字符类型 或整形 ; • case后面的常量不能重复 ; • 程序3-3采用小程序实现将学生的百分制 成绩转换为优、良,中、及格和不通过 五个等级:
8
// 程序3-3 import java.awt.*; import java.applet.*;
3.2
循环控制语句
• Java中的循环控制语句有三种,分别是: while,do-while和for语句;
• 循环体内的语句会反复执行,直到控制 布尔表达式的值变为false为止。
14
3.2.1
while语句
• while语句格式: while ( Boolean-Expression ) StatementS 程序示例3-4 略
public class scoreConvert extends Applet{ Label prompt; TextField input; int Excellent,Good,Middle,Pass,Failure;
public void init( ) { prompt=new Label("输入成绩"); input=new TextField(2); add(prompt); add(input); } public void paint(Graphics g) { g.drawString("各等级的人数:",25,40); g.drawString("优秀 : "+Excellent,25,55); g.drawString("良好 : "+Good,25,70); g.drawString("中等 : "+Middle,25,85); g.drawString("及格 : "+Pass,25,100); g.drawString("不通过: "+Failure,25,115); }
22
3. 3.1 不带标号的break语句和continue语句
for( int i=1;i<10;i++) { if(i%3==0) continue; else System.out.println("i = "+i); } for( int i=1;i<10;i++) { if(i%3==0) break; else System.out.println("i = "+i); }
public void init( ) { lab1=new Label("输入第1个整数"); input1=new TextField(10); lab2=new Label("输入第2个整数"); input2=new TextField(10); add(lab1); add(input1); add(lab2); add(input2);
20
3.3
break语句和continue语句
• 不带标号的break和continue语句;
• 带标号的break和continue语句。
21
3. 3.1 不带标号的break语句和continue语句 • break语句可以跳出包含它的最内层的循 环,不再执行剩余的语句; • continue语句停止执行当前的循环,回到 循环处,开始执行下一轮的循环。这些 特性和C/C++的功能一样。
28
用法区别(续)
• break语句的标号也必须位于封闭语句的 前面,但不一定是循环语句。 例如:
outer:{ i=0; for(i=0;i<3;i++) for(j=0;j<3;j++){ System.out.println(i+" "+j); if(j==1) break outer; } } 29
}
}
补充:for循环增强
• for 循环增强语法格式如下:
for (变量类型 变量名:集合变量名) { Statement }
• 注意事项:
可变参数:一个方法 迭代变量必须在( )中定义 接受的参数个数不确 集合变量可以是数组或是实现了Iterable接口的类 定 • 举例:
public int add(int x,int ...args ){ int sum=x; for(int arg:args){ sum+=arg; } return sum; }
15
3.2.2
do-while语句
• do-while语句的语法格式如下: do{ Statement }while (Boolean-Expression ) ; 程序3-5 如下:
16
// 产生一个大于0.9的随机数为止 public class GenerateDoubleNumbers { public static void main(String args[ ]){ double d;
程序3-3需要注意的地方
• 在action()方法中调用的repaint( )方法, 是一个系统方法,它具有自动调用 paint( )方法的能力,从而实现对网页的 刷新。
12
课堂练习题
1、仔细分析下面程序,写出程序的最终运行结果。 public class s_switch { public static void main(String args[]) { int ch=8; int r=10; switch(ch-1){ case 7: r=r+3; 结果是: ? r = 24 case 8: r=r+5; case 9: r=r+6; break; default: ; } System.out.println("r="+r); } }
作业: P49 1—4
31
24
// 程序3-8 public class Hello{ public static void main(String args[ ]){ int i,j=0; outer: for(i=0;i<5;i++) for(j=0;j<5;j++){ System.out.println(i+" "+j); if(j==1) break outer; } System.out.println("最终值:"+i+" "+j); } }
2
3.1 分支语句
• if-else语句; • switch-case语句 。
3
/C++; • 条件表达式必须是布尔类型,例如: 下面的写法在C/C++中是合法的,但在 Java中却是非法的 : int i=10; if ( i )
...
4
程序3-1描述了用applet从文本框获取数据,然 后将比较的结果显示出来。 // 程序 3-1 import java.awt.*; import java.applet.*; public class compareNumbers extends Applet{ Label lab1,lab2; TextField input1,input2; int num1,num2;
public boolean action(Event e , Object o) { int score=Integer.parseInt(input.getText( )); showStatus(""); input.setText(""); switch(score/10) { case 10: case 9: Excellent++; break; case 8: Good++; break; case 7: Middle++; break; case 6: Pass++; break; case 5: case 4: case 3: case 2: case 1: case 0: Failure++; break; default: showStatus("输入有误,重新输入!"); } repaint( ); return true; } }
}
public boolean action(Event e , Object o) { if (e.target==input1 || e.target==input2) { num1=Integer.parseInt(input1.getText( )); num2=Integer.parseInt(input2.getText( )); if(num1<num2) showStatus(num1 + " < " + num2); else if (num1>num2) showStatus(num1+" > "+num2); else showStatus(num1+" == "+num2); } return true; }
312switchswitch后面的表达式类型必须是字符类型或整形程序33采用小程序实现将学生的百分制成绩转换为优良中及格和不通过五个等级
第3章 控制语句
本章主要讲述内容
• • • • Java的分支语句; 循环控制语句; break和continue语句; 带标号的break和continue语句。
18
// 程序3-6输出一个*三角形 public class printGraphics extends Applet{ public void paint(Graphics g) { int xpos,ypos=0;
for(int row=6;row>=1;row--) { xpos=25; ypos+=15; for(int column=1;column<=row;column++) { g.drawString("*",xpos,ypos); xpos+=7; } }
程序运行结果: 0 0 0 1 最终值:0 1
如 果 将 上 述 程 序 中 的 break outer修改为continue outer, 再次运行该程序,结果如下: 0 0 0 1 1 0 1 1 2 0 2 1 最终值:3 1
这两个带标号语句的共同点
• 都必须用在循环中,用于流程控制;
• 执行这两个语句时,若后面还有其它语 句,将不在继续执行。
结果 ?
23
3. 3.2 带标号的break语句和continue语句 • 当在循环中执行带标号的break语句时,可 以立即退出任意多个嵌套循环。语法格式: break Identifier; • 当在循环中执行带标号的continue语句时, 可以将控制转移到标号的地方,开始下一轮 的循环。语法格式:continue Identifier; • 程序3-8 给出了带标号的break语句用法。
27
这两个带标号语句在用法上的区别
• continue语句的标号必须位于封闭的循环 语句的前面。如下用法就是错误的:
outer: { i=0; for(i=0;i<3;i++) for(j=0;j<3;j++){ System.out.println(i+" "+j); if(j==1) continue outer; } }
do{
d=Math.random( ); System.out.println(d); }while (d<0.9); }
作业: 随机产生26个英文字母 a~z,直到大于u为止。 用while和for语句实现。
}
3.2.3
for语句
• for语句语法格式如下:
for ( ForInitopt ; Boolean-Expression ; ForUpdateopt ) Statement
}
3.1.2
switch 语句
• switch语句的语法结构 同C/C++; • switch后面的表达式类型必须是字符类型 或整形 ; • case后面的常量不能重复 ; • 程序3-3采用小程序实现将学生的百分制 成绩转换为优、良,中、及格和不通过 五个等级:
8
// 程序3-3 import java.awt.*; import java.applet.*;