Java大学实用教程(第二版)实验
最新java大学实用教程(第二版附课后练习答案第6章字符串与正则表达式ppt课件

System.out.println(date.toString());
System.out.println(stu.toString());
System.out.println(tv.toString());
}
}
class Student{
String name;
double score;
Student(String name,double score){
有时,我们需要将数字转化为字符串,可以使用String 类的下列类方法:
public String valueOf(byte n) public String valueOf(int n) public String valueOf(long n) public String valueOf(float n) public String valueOf(double n) 我们可以使用Long类中的下列方法,得到整数的各种进制数的 表示。
String 类还提供了一个方法: public char[] toCharArray() 字符串对象调用该方法可以初始化一个字符数组,该 数组的长度与字符串的长度相等,并将字符串对象的 全部字符复制到该数组中。 例子6_4在这个例子中用户在键盘上输入字符串,程序实 现将其加密然后输出的目的。
返回
5.字符串与基本数据的相互转化 ng包中的Integer类调用其类方法: public static int parseInt(String s) 可以将“数字”格式的字符串,如“12387”,转化为int型 数据。 类似地,使用ng包中的Byte、Short、Long、Float、 Double类调相应的类方法: public static byte parseByte(String s) public static short parseShort(String s) public static long parseLong(String s) public static double parseFloat(String s) public static double parseDouble(String s) 可以将“数字”格式的字符串,转化为相应的基本数据类型。
Java大学实用教程(第2版)[耿祥义等编著][电子教案]第2章
![Java大学实用教程(第2版)[耿祥义等编著][电子教案]第2章](https://img.taocdn.com/s3/m/261f3b69011ca300a6c3902b.png)
2.2
基本数据类型
1.逻辑类型 常量:true ,false。 变量的定义: 使用关键字boolean来定义逻辑变量,定义时也可 以赋给初值。 2.整数类型 常量:123,6000(十进制),077(八进制), 0x3ABC(十六进制)。 整型变量的定义分为4种
2.2
基本数据类型
(1)int 型 使用关键字int来定义int 型整型变量,定义时也 可以赋给初值,例如:int x,平均=9898;对于int型 变量,内存分配给4个字节(byte)。int型变量的取值 范围是: -231~231-1。 (2)byte 型 使用关键字byte 来定义byte 型整型变量。对于 byte型变量,内存分配给1个字节,占8位,byte型变量 的取值范围是-27~27-1。
2.5 数组
4.数组的初始化
创建数组后,系统会给每个数组元素一个默认的值,如,float型是0.0。 我们在声明数组时同时也还可以给数组的元素一个初始值,如: float boy[]={ 21.3f,23.89f,2.0f,23f,778.98f}; 数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相 同的元素。例如,对于 int [] a={1,2,3},b={4,5}; 数组变量a和b分别存放着不同的引用。但是,如果使用了赋值语句:a=b;那么,a中存 放的引用就和b的相同,这时系统将释放最初分配给数组a的元素,使得a的元素和b的元 素相同,即a[0],a[1]就是b[0],b[1],而最初分配给数组a的三个元素已不复存在 .
返回
2.5 数组
数组是相同类型的数据按顺序组成的一种复合数据类 型。通过数组名加数组下标来使用数组中的数据。下标从 0开始。 1.声明数组 声明数组包括数组的名字、数组包含的元素的数据类 型。 声明一维数组有下列两种格式: 数组元素类型 数组名字[ ]; 数组元素类型[ ] 数组名字;
Java 程序设计 实用教程(第2版) 电子教案(课件)

课件制作人:XXX
Oak
Oak就是Java语言的前身,这个名称源于 Gosling办公室的窗外正好有一棵橡树(Oak)。 这时的Oak已经具备安全性、网络通信、面向对 象、Garbage Collected、多线程等特性,是一 款相当优秀的程序语言。后来,由于去注册Oak 商标时,发现它已经被另一家公司注册,所以不 得不改名。要取什么名字呢,工程师们边喝咖啡 边讨论着,看看手上的咖啡,再想到印度尼西亚 有一个重要的盛产咖啡的岛屿,中文名叫爪哇, 于是将其改名为Java。
课件制作人:XXX
1.3.2 面向对象
Java语言以面向对象为基础。在Java语言中, 不能在类外面定义单独的数据和函数,所有对象 都要派生于同一个基类,并共享它所有功能,也 就是说,Java语言最外部的数据类型是对象,所 有的元素都要通过类和对象来访问。
课件制作人:XXX
1.3.3 可移植性
Java程序具有与体系结构无关的特性。这一 特征使Java程序可以方便地移植到网络的不同机 器。同时,Java的类库中也实现了针对不同平台 的接口,使这些类库可以移植。
课件制作人:XXX
Java SE
JavaSE是Java语言的标准版本,包含Java 基础类库和语法。它用于开发具有丰富的GUI (图形用户界面)、复杂逻辑和高性能的桌 Nhomakorabea应 用程序。
课件制作人:XXX
Java EE
JavaEE用于编写企业级应用程序。它是一 个标准的多层体系结构,可以将企业级应用程序 划分为客户层、表示层、业务层和数据层,主要 用于开发和部署分布式、基于组件、安全可靠、 可伸缩和易于管理的企业级应用程序。
课件制作人:XXX
课件制作人:XXX
Java ME
java大学实用教程 第二版 实验指导书

实验1 Java运行环境及简单应用程序开发一、实验目的(1)可以安装并配置Java运行环境。
(2)掌握Java中path和classpath的属性作用。
(3)可以编写一个简单的Java应用程序。
(4)掌握Java应用程序的开发流程。
二、实验内容及步骤1.安装并配置运行环境(1)任务安装JA V A SE,检查和设置环境变量path。
(2)步骤第一步:安装JA V A SE,安装后在安装目录下应有jdk和jre文件夹。
第二步:设置环境变量path,步骤参见教材P7。
第三步:检查环境变量path,可在命令提示符下使用命令javac –version 检查path是否配置好及jdk的版本。
第四步:如运行或编译程序时出错,可配置classpath,步骤参见教材P7。
(3)问题:程序中的主类如果不用public修饰,编译能通过吗?程序中的主类如果不用public修饰,能正确运行吗?编译器怎样提示丢失大括号的错误?编译器怎样提示语句丢失分号的错误?编译器怎样提示将System写成system这一错误?编译器怎样提示将String写成string这一错误?(4)实验报告将上述思考题写在实验报告上。
2. 编写简单的Java应用程序(1)任务任务一:在屏幕上输出“我喜欢学习java”。
任务二:在屏幕上输出出以下信息:******************************** java程序设计*******************************(2)步骤第一步:使用记事本或EDIT编写源程序,源程序内容参见教材P9例1-1。
第二步:保存并为源程序命名。
保存时若使用记事本,保存类型请选择“所有类型”,命名规则参见教材P9,保存类型为.java。
第三步:打开命令提示符,进入源程序保存的文件夹下,使用编译器对其进行编译:如javac Hello.java。
第四步:如编译时无任何提示,说明源程序无错误,可对生成的class文件进行解释并执行,如java Hello,此步省略.class。
JAVA2实用教程-1

{ float hight,weight; String head, ear, mouth; void speak (String s) { System.out.println(s) ; } }
23
class A
{ public static void main(String[ ] args) { People zhubajie; zhubajie=new People(); zhubajie.weight=200f; zhubajie.hight=1.70f; zhubajie.head=“大头”; zhubajie.ear="两只大耳朵" ; zhubajie.mouth="一只大嘴"; System.out.println ( “重量”+zhubajie.weight +“ 身高”+ zhubajie.hight) ; System.out.println ( zhubajie.head+zhubajie.mouth+zhubajie.ear) ; zhubajie.speak("师傅,咱们别去西天了,改去月宫吧."); } }
被公认为计算机史上的革命性编程语言
上一页 下一页 退 出
复旦大学IBM技术中心
11
为什么选择Java
Java非常适合软件开发, 尤其是团队协作
简单、面向对象、分布式、解释、稳固、安全、与体 系结构无关、可移植、高性能、多线程、动态
开放源代码(免费系统) 适合网络应用
Java 程序占的空间很小,在网上可以相当快地加载 安全性好:可以防止程序被偶然或者有意破坏
<applet code= " Boy.class" width=300 height=50> </applet>
Java大学实用教程(第2版)问答题答案1_3章

第一章问答题1.答:开发Java语言的动力源于对独立平台的需要,即用这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况;致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码主要贡献者是James Gosling。
2.答:不正确。
Java提供的编译器把源程序编译成称为“字节码”的一个中间代码。
字节码是很接近机器码的二进制文件,不能被机器直接识别。
3.答:Java应用程序的主类必须含有public static void main(String args[])方法,作为应用程序运行的入口和起始点。
4.答:不正确。
可以没有public类。
Java程序的源文件中如果有多个类,那么只能有一个类是public类。
如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名为.java。
如果源文件没有public类,那么源文件的名字只要与某个类的名字相同,并且拓展名为.java就可以了。
5.答:正确。
Java Applet源文件的主类必须是public的。
按照源文件的命名规定,Java Applet源文件的名字一定与主类的名字相同。
6.答:如果源文件中有多个类,那么只能有一个类是public类;如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,拓展名为.java;如果源文件没有public类,那么源文件的名字只要与某个类的名字相同,并且拓展名为.java就可以了。
7.答:源文件生成的字节码在运行时只将程序需要的字节码加载到内存中。
8.答:开发一个Java Applet程序需经过三个步骤:编写源文件、编译源文件生成字节码、通过浏览器加载运行字节码。
1)编写源文件。
一个Java Applet源文件也是由若干个类组成的,一个Java Applet源文件不再需要main方法,但必须有且只有一个类扩展了Applet类,即它是Applet类的子类(Applet类是系统提供的类),我们把这个类称作Java Applet源文件的主类。
JAVA大学实用教程(第二版)11

11.1
URL类
该URL对象使用的协议是HTTP,即用 户按照这种协议与指定的服务器通 信,该URL对象包含的地址是 “”,所包含的资源 是默认的资源(主页)。
11.1
URL类
public URL(String protocol,String host,String file) throws MalformedURLException——构造的 URL对象、协议、地址和资源分别由 参数protocol、host和file指定。
11.3 显示URL资源中的 HTML文件 public JEditorPane(URL initialPage) throws IOException public JEditorPane(String url) throws IOException 可以构造JEditorPane对象。后两个方 法使用参数initialPage或url指定 该对象最初显示的URL中的资源。
例11-1 读取URL资源
InputStream in=url.openStream(); while((n=in.read(b))!=-1){ String s=new String(b,0,n); area.append(s); } } catch(MalformedURLException e1){ text.setText(""+e1); return; } catch(IOException e1){ text.setText(""+e1); return; } } }
11.3 显示URL资源中的 HTML文件 JEditorPane对象调用方法: public void setpage(URL page) thows IOException方法可以显示新的URL中 的资源。 在例11-2中,用JEditorPane对象 显示网页。
java2实用教程实验代码及答案

上机实践1 初识JA V A (3)实验1一个简单的应用程序 (3)实验2一个简单的J A V A A PPLET程序 (3)实验3联合编译 (4)上机实践2 基本数据类型与控制语句 (5)实验1输出希腊字母表 (5)实验2回文数 (6)实验3猜数字游戏 (8)上机实践3 类与对象 (9)实验1三角形、梯形和圆形的类封装 (9)实验2实例成员与类成员 (12)实验3使用PACKAGE语句与IMPORT语句 (14)上机实践4 继承与接口 (16)实验1继承 (16)实验2上转型对象 (19)实验3接口回调 (21)上机实践5 字符串、时间与数字 (23)实验1S TRING类的常用方法 (23)实验2比较日期的大小 (24)实验3处理大整数 (25)上机实践6 组件及事件处理 (26)实验1算术测试 (26)实验2信号灯 (29)实验3布局与日历 (31)上机实践7 组件及事件处理2 (35)实验1方程求根 (35)实验2字体对话框 (38)实验3英语单词拼写训练 (41)上机实践8 多线程 (45)实验1汉字打字练习 (45)实验2旋转的行星 (47)实验3双线程接力 (51)上机实践9 输入输出流 (54)实验1学读汉字 (54)实验2统计英文单词字 (57)实验2读取Z IP文件 (61)上机实践10 JAV A 中的网络编程 (62)实验1读取服务器端文件 (62)实验2使用套接字读取服务器端对象 (64)实验3基于UDP的图像传输 (67)上机实践11 数据结构 (71)实验1扫雷小游戏 (71)实验2排序与查找 (76)实验3使用T REE S ET排序 (77)上机实践12 JAV A SWING (79)实验1JL AYERED P ANE分层窗格 (79)实验2使用表格显示日历 (80)实验3多文档界面(MDI) (83)上机实践1 初识Java实验1 一个简单的应用程序1.答案:【代码1】:System.out.println("你好,很高兴学习Java") ;【代码2】:System.out.println("We are students") ;2.模板代码Hello.javapublic class Hello{public static void main (String args[ ]){【代码1】//命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A{void fA(){【代码2】//命令行窗口输出"We are students"}}实验2 一个简单的Java Applet程序1.答案:【代码1】:g.drawString("这是一个Java Applet 程序",10,30);【代码2】:g.drawString("我改变了字体",20,50);2.模板代码FirstApplet.javaimport java.applet.*;import java.awt.*;public class FirstApplet extends Applet{public void paint(Graphics g){g.setColor(Color.blue);【代码1】//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”g.setColor(Color.red);g.setFont(new Font("宋体",Font.BOLD,36));【代码2】//在Java Applet中绘制一行文字:“我改变了字体”}}实验3 联合编译1.答案:【代码1】:System.out.println("你好,只需编译我");【代码2】:System.out.println("I am A");【代码3】:System.out.println("I am B");【代码4】:System.out.println("I am C");2.模板代码模板1:Hello.javapublic class MainClass{public static void main (String args[ ]){【代码1】 //命令行窗口输出"你好,只需编译我"A a=new A();a.fA();B b=new B();b.fB();}}模板2 :A.javapublic class A{void fA(){【代码2】 //命令行窗口输出"I am A"}}模板3 :B.javapublic class B{void fB(){【代码3】 //命令行窗口输出"I am B"}}模板4 :C.javapublic class C{void fC(){【代码4】 //命令行窗口输出"I am C"}}上机实践2 基本数据类型与控制语句实验1 输出希腊字母表1.答案:【代码1】:startPosition=(int)cStart;【代码2】:endPosition=(int)cEnd ;【代码3】:c=(char)i;2.模板代码GreekAlphabet.javapublic class GreekAlphabet{public static void main (String args[ ]){int startPosition=0,endPosition=0;char cStart='α',cEnd='ω';【代码1】//cStart做int型转换据运算,并将结果赋值给startPosition【代码2】//cEnd做int型转换运算,并将结果赋值给endPositionSystem.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+(int)c);System.out.println("希腊字母表:");for(int i=startPosition;i<=endPosition;i++){char c='\0';【代码3】//i做char型转换运算,并将结果赋值给cSystem.out.print(" "+c);if((i-startPosition+1)%10==0)System.out.println("");}}}实验2 回文数1.答案:【代码1】:number<=99999&&number>=1【代码2】:d5=number/10000;【代码3】:d4=number%10000/1000;【代码4】:d3=number%1000/100;【代码5】:d5!=0【代码6】:d1==d5&&d2==d4【代码7】:d4!=0【代码8】:d1==d4&&d2==d3【代码9】:d3!=0【代码10】:d1==d32.模板代码Number.javaimport javax.swing.JOptionPane;public class Number{public static void main(String args[]){int number=0,d5,d4,d3,d2,d1;String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");number=Integer.parseInt(str);if(【代码1】) //判断number在1至99999之间的条件{【代码2】//计算number的最高位(万位)d5【代码3】//计算number的千位d4【代码4】//计算number的百位d3d2=number%100/10;d1=number%10;if(【代码5】) //判断number是5位数的条件{System.out.println(number+"是5位数");if(【代码6】) //判断number是回文数的条件{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(【代码7】) //判断number是4位数的条件{System.out.println(number+"是4位数");if(【代码8】) //判断number是回文数的条件码{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(【代码9】) //判断number是3位数的条件{System.out.println(number+"是3位数");if(【代码10】) //判断number是回文数的条件{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(d2!=0){System.out.println(number+"是2位数");if(d1==d2){System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(d1!=0){System.out.println(number+"是1位数");System.out.println(number+"是回文数");}}else{System.out.printf("\n%d不在1至99999之间",number);}}}实验3 猜数字游戏1.答案:【代码1】:yourGuess!=realNumber【代码2】:yourGuess>realNumber【代码3】:yourGuess<realNumber2.模板代码GuessNumber.javaimport javax.swing.JOptionPane;public class GuessNumber{public static void main (String args[ ]){System.out.println("给你一个1至100之间的整数,请猜测这个数");int realNumber=(int)(Math.random()*100)+1;int yourGuess=0;String str=JOptionPane.showInputDialog("输入您的猜测:");yourGuess=Integer.parseInt(str);while(【代码1】) //循环条件{if(【代码2】) //条件代码{str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");yourGuess=Integer.parseInt(str);}else if(【代码3】) //条件代码{str=JOptionPane.showInputDialog("猜小了,再输入你的猜测:");yourGuess=Integer.parseInt(str);}}System.out.println("猜对了!");}}上机实践3 类与对象实验1 三角形、梯形和圆形的类封装1.答案:【代码1】:sideA=a;sideB=b;sideC=c;【代码2】:a+b>c&&a+c>b&&c+b>a【代码3】:boo=true;【代码4】:boo=false;【代码5】:if(boo){length=sideA+sideB+sideC;return length;}else{System.out.println("不是一个三角形,不能计算周长");return 0;}【代码6】:sideA=a;sideB=b;sideC=c;【代码7】:a+b>c&&a+c>b&&c+b>a【代码8】:boo=true;【代码9】:boo=false;【代码10】:above=a;bottom=b;height=h;【代码11】:area=(above+bottom)/2*height;return area;【代码12】:radius=r;【代码13】:return 3.14*radius*radius;【代码14】:return 3.14*2*radius;【代码15】:circle=new Circle(10);【代码16】:trangle=new Trangle(3,4,5);【代码17】:lader=new Lader(3,4,10);【代码18】:length=circle.getLength();【代码19】:area=circle.getArea();【代码20】:length=trangle.getLength();【代码21】:area=trangle.getArea();【代码22】:area=lader.getArea();【代码23】:trangle.setABC(12,34,1);【代码24】:area=trangle.getArea();【代码25】:length=trangle.getLength();2.模板代码AreaAndLength.javaclass Trangle{double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c){【代码1】//参数a,b,c分别赋值给sideA,sideB,sideCif(【代码2】) //a,b,c构成三角形的条件表达式{【代码3】//给boo赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.程序模板 按模板要求,将【代码1】~【代码7】替换为Java程序代码。
SaleExample.java
package test1; class TicketSeller // 负责卖票的类 { int fiveNumber=1,tenNumber=0,twentyNumber=0; public synchronized void sellTicket(int receiveMoney,int buyNumber) { if(receiveMoney==5) { fiveNumber=fiveNumber+1; System.out.printf("\n%s给我5元钱,这是您的1张入场 卷",Thread.currentThread().getName()); } else if(receiveMoney==10&&buyNumber==2)
作",boss.getName(),wangWorker.getName()); } } } else if(Thread.currentThread()==boss) { while(true) { zhangWorker.interrupt(); //【代码6】 // 吵醒 zhangWorker wangWorker.interrupt(); //【代码7】 // 吵醒wangWorker if(!(wangWorker.isAlive()||zhangWorker.isAlive())) { System.out.printf("%n%s下班",boss.getName()); return; } } } } } class ShopExample { public static void main(String args[]) { Shop1 shop=new Shop1(); shop.zhangWorker.start(); shop.wangWorker.start(); shop.boss.start(); } }
Java大学实用教程(第二版)实验
8.2.1 线程的状态
4.程序模板
按模板要求,将【代码1】~【代码1】替换为Java程序代码。 ThreadExample.java
class Tortoise extends Thread { int sleepTime=0,liveLength=0; Tortoise(int sleepTime,String name,int liveLength) { this.sleepTime=sleepTime; this.liveLength=liveLength; setName(“name”); //【代码1】 // 设置线程的名字为 name } public void run() { while(true) { liveLength--; System.out.printf("@"); try { Thread.sleep(sleepTime); //【代码2】 // 让线程调用 sleep方法进入中断状态,sleepTime毫秒后线程 // 重新排队,等待CUP资源 } catch(InterruptedException e) {
Bank bank=new Bank(); bank.zhang.start(); bank.keven.start(); } }
8.2.3 吵醒休眠的线程
4.程序模板 按模板要求,将【代码1】~【代码7】替换为Java程序代码。
ShopExample.java
package test; class Shop1 implements Runnable { Thread zhangWorker,wangWorker,boss; Shop1() { boss=new Thread(this);//【代码1】 // 创建boss,Shop对象为boss目 标对象 zhangWorker= new Thread(this);//【代码2】 // 创建 zhangWorker,Shop对象为boss目标对象 wangWorker= new Thread(this);//【代码3】 // 创建wangWorker, Shop对象为boss目标对象 zhangWorker.setName("张工"); wangWorker.setName("王工"); boss.setName("老板"); } public void run() { int i=0;
if(Thread.currentThread()==zhangWorker) { while(true) { try{ i++; System.out.printf("\n%s已搬运了%d箱苹果 \n",zhangWorker.getName(),i); if(i==3) return; Thread.sleep(10000);//【代码4】 // zhangWorker休眠10 秒(10000毫秒) } catch(InterruptedException e) { System.out.printf("\n%s让%s继续工 作",boss.getName(),zhangWorker.getName()); } } } else if(Thread.currentThread()==wangWorker) { while(true) { try{ i++; System.out.printf("\n%s已搬运了%d箱苹果 \n",wangWorker.getName(),i); if(i==3) return; Thread.sleep(10000);//【代码5】 // wangWorker休眠10 秒(10000毫秒) } catch(InterruptedException e) { System.out.printf("\n%s让%s继续工
8.2.2 使用Rannable接口
4.程序模板 按模板要求,将【代码1】~【代码10】替换为Java程序代码。
BankExample.java
class Bank implements Runnable { int money=100;//【代码1】 // 声明一个int型变量money,初 值为100 Thread zhang,keven; Bank() { zhang = new Thread(this); //【代码2】 // 创建zhang,Bank 对象为zhang的目标对象 zhang.setName(“会计”); //【代码3】 // 设置zhang线程的名 字为“会计” keven = new Thread(this); //【代码4】 // 创建keven,Bank 对象为keven的目标对象 keven.setName(“出纳”); //【代码5】 // 设置keven线程的名 字为“出纳” } public void run() { int i = 0; //【代码6】 // 声明一个int类型变量i,初值为0 while(true) { if(zhang.isAlive()) // 判断线程zhang是否正在占有CUP资 源 { i=i+1; money=money+1; System.out.printf("\n%s将money的值改 为%d\t",zhang.getName(),money); System.out.printf("%s的局部变量 i=%d\n",zhang.getName(),i); if(i>=6) { System.out.printf("%s线程进入死亡状态 \n",zhang.getName()); return; //【代码8】 // 使得线程zhang进入死亡状态 }
System.out.printf(getName()+"进入死亡状态\n"); return; // 【代码6】 // 结束run方法的语句 } } } } public class ThreadExample { public static void main(String args[ ]) { Rabbit rabit; rabit= new Rabbit(100, "rabit", 100); //【代码7】 // 新 建线程rabit Tortoise tortoise; tortoise= new Tortoise(200, "tortoise", 200); //【代码8】 // 新建线程tortoise tortoise.start(); //【代码9】 // 启动线程tortoise rabit.start(); //【代码10】 // 启动线程rabit } }
{ tenNumber=tenNumber+1; System.out.printf("\n%s给我10元钱,这是您的2张入场 卷",Thread.currentThread().getName()); } else if(receiveMoney==10&&buyNumber==1) { while(fiveNumber<1) //【代码1】// 给出线程需等待的条件 { try { System.out.printf("\n%30s靠边 等",Thread.currentThread().getName()); wait(); //【代码2】 // 线程进入等待状态 System.out.printf("\n%30s结束等待 \n",Thread.currentThread().getName()); } catch(InterruptedException e) { } } fiveNumber=fiveNumber-1; tenNumber=tenNumber+1; System.out.printf("\n%s给我10元钱,找您5元,这是您的1张入 场卷",Thread.currentThread().getName()); } else if(receiveMoney==20&&buyNumber==1) { while(fiveNumber<1||tenNumber<1) //【代码3】// 给出线程需等 待的条件 { try { System.out.printf("\n%30s靠边 等",Thread.currentThread().getName()); wait();//【代码4】 // 线程进入等待状态 System.out.printf("\n%30s结束等 待",Thread.currentThread().getName());