java实验1机动车实验目的_《Java程序设计》实验指导书.doc
《Java程序設計》實驗指導書
實驗一、熟悉JDK環境及主要命令
一、實驗目的
1) 熟悉JDK的環境配置
2) 掌握JDK的命令
3) 掌握Java Application程序的開發過程,并編寫一個Java Application程序
二、實驗內容
1.按照上課所學知識,為自己的機器配置環境變量
2.編輯一個Hello World 的小程序,并試著編譯運行它
3.將Vehicle 和VehicleDriver兩個文件用自己的文本編輯器重新編輯并編譯運行,掌握類和對象的定義和使用
1)Vehicle.java (注意:以下代碼有幾個錯誤的地方,需要同學自己把他們找出來并更正過來)
public class Vehicle{
public float journey;
public int wheelNum;
public int loadNum;
public int driveSpeed;
/**
*Vehicle 類構造函數,設定初始值
*/
public Vehicle(){
journey=100.3f;
wheelNum=4;
loadNum=1;
}
/**
*Vehicle類的driveAt行駛方法
*/
public void driveAt(int speed){
if (speed>=60){
System.out.println("行車速度太快,容易造成事故");
//如果要求的車速太快,則機動車自動以40單位速度行駛
driveSpeed=40;
}
else {
System.out.println("你在安全行駛速度內行駛");
driveSpeed=speed;
}
}
}
2)VehicleDriver.java
public class VehicleDriver{
public String name; //定義司機的名字
/**
*VehicleDriver 類構造函數
*/
public VehicleDriver(){
name="TOM";
}
/**
*VehicleDriver 類對象的work方法
*/
public void work(){
Vehicle v=new Vehicle(); //生成Vehicle類的對象v
v.driveAt(70); //調用v對象所固有的driveAt()方法
}
public static void main(String args[]){
//生成VehicleDriver類的對象vb
VehicleDriver vd=new VehicleDriver();
vd.work(); //調用vd對象所固有的work()方法
}
}
3.將Vehicle 和VehilceDriver 兩個類放在一個.java文件中,文件名稱取名為Vtogether.java (注意:需將Vehicle 或 VehicleDriver中某一個類的名稱改名為Vtogether,具體更改哪一個由同學根據實際情況來判斷),編譯和運行該文件
實驗二、類的定義和對象的使用
一、實驗目的
1) 掌握類的定義
2) 掌握對象的使用
3) 掌握構造方法的重載
二、實驗內容
1.創建一個汽車類CarModel.java,它里面有2個不同的構造函數,CarManufactory.java可以應用這些構造方法創建不同類型的汽車
CarModel.java設計要求如下:
定義style(String),color(String),category(String)注:括號中為變量類型
創建第一個構造函數,分別給以上變量賦值,要求為該構造函數定義三個形參,分別賦給相應的變量,形參的值在對象創建時給出
創建第二個構造函數,此構造函數過程為空
定義三個方法,分別返回style,color,category的值
CarManufactory.java設計要求如下:
使用不同的構造函數創建兩輛汽車
顯示兩輛車相關的屬性,屬性的值要從CarModel的相關方法中取出
2.判斷以下程序的結果,并把它改成兩個類的形式,其中一個類專門處理運算。
public class Excer{
public static void main(String args[]){
Excer ex=new Excer();
ex.math();
}
void math(){
int x=130,y=45;
System.out.println("x="+x+" ,y="+y);
System.out.println("x+y="+plus(x,y));
System.out.println("x-y="+minus(x,y));
System.out.println("x*y="+multi(x,y));
System.out.println("x/y="+div(x,y));
}
int plus(int a,int b){
return(a+b);
}
int minus(int a,int b){
return(a-b);
}
int multi(int a,int b){
return(a*b);
}
float div(int a,int b){
return ((float)a/b);
}
}
實驗三、繼承
一、實驗目的
1) 掌握類的繼承
2) 掌握類成員的覆蓋和重載
二、實驗內容
1.Vehicle類的基礎上創建一個Tractor(拖拉機)類,他不但擁有journey,wheelNum,loadNum,driveSpeed 四種屬性和driveAt()方法,而且還擁有自己的plough(耕地)方法,在該方法中要求能夠顯示journey, wheelNum, loadNum三個屬性的值,在Tractor中覆蓋driverAt()方法,速度大于等于35就認為是超速,如果是超速速度就要設為20,在這個類中還要創建一個main()方法,分別調用plough()、driveAt方法和Vehicle類的driverAt()方法。
public class Vehicle{
public float journey;
public int wheelNum;
public int loadNum;
public int driveSpeed;
public Vehicle(){
journey=100.3f;
wheelNum=4;
loadNum=1;
}
public void driveAt(int speed){
if (speed>=60){
System.out.println("行車速度太快,容易造成事故");
//如果要求的車速太快,則機動車自動以40單位速度行駛
driveSpeed=40;
}
else {
System.out.println("你在安全行駛速度內行駛");
driveSpeed=speed;
}
}
}
2.在以下程序中出現了屬性的覆蓋和方法的重載,編譯運行下面程序,掌握產生屬性覆蓋時屬性的變化規則和方法的重載時調用的方法規則。
class NoteX {
public static final int MIDDLE_C = 0;
public static final int C_SHARP = 1;
public static final int C_FLAT = 2;
}
public class Father{
int a=100;
public void miner(){
a--;
}
public void play(int NoteX) {
System.out.println("Father.play()");
}
public static void main(String[] arg){
Father x=new Father();
Son y=new Son();
System.out.println("a of son is :" +y.a);
System.out.println("a of sons super is :" +y.getA());
y.miner();
System.out.println("a of son is :"+y.a);
System.out.println("a of sons super is :" +y.getA());
y.play(NoteX. C_SHARP);
y.play(new NoteX());
}
}
class Son extends Father {
int a=0;
public int getA(){
return super.a;
}
public void play(NoteX n) {
System.out.println("Son.play(NoteX n)");
}
}
實驗四、接口與內部類
一、實驗目的
1)、掌握接口的定義和使用方法
2)、掌握內部類的定義和使用方法
二、實驗內容
1. 將以下圖示用接口實現和繼承實現
2. 已知有兩個接口如下所示,要求定義一個類,其中包含兩個內部類,這兩個內部類分別實現這兩個接口,且設為private,在類中分別定義兩個方法,可以返回這兩個接口。
public interface Destination {
String readLabel();
}
public interface Contents {
int value();
}
實驗五、異常的處理機制
一、實驗目的
1) 掌握異常的聲明
2) 掌握異常的拋出
3) 掌握異常的捕獲
4) 掌握自定義異常的使用
二、實驗內容
1.編寫一段Java程序,在被調用方法中拋出一個異常對象,并將異常交給調用它的方法來處理
2.編寫一段Java程序,創建一個自定義異常類,并在一個方法中拋出自定義異常對象,在該方法的catch處理程序中捕獲它并重新拋出,讓調用它的方法來處理。
實驗六、多線程編程
一、實驗目的
1) 了解多線程的定義
2) 理解多線程的互斥和同步
3) 掌握多線程的調度和控制
二、實驗內容
1.使用Runnable接口實現以下類的功能:
public class testThread extends Thread{
public testThread(){}
public void run(){
System.out.println("run()方法運行....");
}
public static void main(String arg[]){
testThread t=new testThread();
System.out.println("start() 開始運行...");
t.start();
}
}
2.假設一個銀行的ATM機,它可以允許用戶存款也可以取款。現在一個賬戶上有存款200元,用戶A和用戶B都擁有在這個賬戶上存款和取款的權利。用戶A將存入100元,而用戶B將取出50元,那么最后賬戶的存款應是250元。
實際操作過程如下:
l 先進行A的存款操作:
(1)得到賬戶的存款數額200,耗時2s。
(2)將賬戶數額增加100,耗時忽略不計
(3)將新生成的賬戶結果300返回到ATM機的服務器上,耗時2s
l 在進行B的取款操作:
(4)得到增加后賬戶存款數額300,耗時2s。
(5)將賬戶數額減少50,耗時忽略不計。
(6)將新生成的賬戶結果250返回到ATM機的服務器上,耗時2s。
請同學們根據以上要求,編寫一個Java程序實現該功能
注:將A的操作和B的操作分別用線程來表示
3.如下是消費者和生產者的一個簡化例子,將次程序看懂,然后寫下運行結果。
//CubbyHole.java 存儲數據
public class CubbyHole {
private int contents;
private boolean available = false;
public synchronized int get() {
while (available == false) {
try {
wait();
} catch (InterruptedException e) { }
}
System.out.println("Customerer " + "goe: " + contents);
available = false;
notifyAll();
return contents;
}
public synchronized void put(int value) {
while (available == true) {
try {
wait();
} catch (InterruptedException e) { }
}
System.out.println("Producer " + "put " + value);
contents = value;
available = true;
notifyAll();
}
}
// Producer.java 生產者
public class Producer extends Thread {
private CubbyHole cubbyhole;
public Producer(CubbyHole c) {
cubbyhole = c;
}
public void run() {
for (int i = 0; i < 10; i++) {
cubbyhole.put(i);
}
}
}
// Consumer.java 消費者
public class Consumer extends Thread {
private CubbyHole cubbyhole;
public Consumer(CubbyHole c) {
cubbyhole = c;
}
public void run() {
int value = 0;
for (int i = 0; i < 10; i++) {
value = cubbyhole.get();
}
}
}
//測試程序
public class ProducerConsumerTest {
public static void main(String[] args) {
CubbyHole c = new CubbyHole();
Producer p1 = new Producer(c);
Consumer c1 = new Consumer(c);
p1.start();
c1.start();
}
}
實驗七、輸入輸出字節流
一、 實驗目的
1)、掌握輸入字節流的操作
2)、掌握輸出字節流的操作
二、 實驗內容
1.定義一個字節數組,將其輸出到屏幕上
2.將一個圖片的內容讀取到字節數組當中
實驗八、輸入輸出字符流
一、實驗目的
1)、掌握輸入字符流的操作
2)、掌握輸出字符流的操作
二、實驗目的
1. 從鍵盤輸入一串字符,將其輸出到屏幕上
2. 將一個文本文件輸出到屏幕上
實驗九、文件及其文件流
一、實驗目的
1)、掌握文件的操作
2)、掌握文件輸入流的操作
3)、掌握文件輸出流的操作
二、實驗內容
1.使用對象的串行化機制,使用RandomAccessFile構造一個應用程序能夠隨機存取文件的記錄,可顯示、修改記錄的內容。撰寫一個StoreDirList類,令其構造函數可以接收文件路徑,并能夠產生該路徑下的所有文件的名稱列表。
2.用DataInputStream輸出一個整型數,一個雙精度數和一個字符串到文件中,然后用DataOutputStream將這些文件讀入并打印到標準輸出設備。
實驗十、Swing容器及其組件
一、實驗目的
1)、掌握容器的屬性與方法
2)、掌握Swing不同組件的屬性與方法
二、實驗內容
1.應用按鈕、單選按鈕、復選框、文本組件等Swing組件設計一個安裝程序的對話框界面
實驗十一、布局管理器
一、 實驗目的
1)、掌握布局管理器的類型
2)、掌握布局管理器的使用方法
二、 實驗內容
1.應用布局方法設計一個手機的界面
實驗十二、事件處理
一、 實驗目的
1)、掌握事件處理模型
2)、能夠用程序實現事件處理
3)、掌握使用內部類的方法處理事件
二、 實驗內容
1.在一個窗口中,在四個位置循環顯示四種不同顏色的正方形,當鼠標點擊時,停止循環顯示,再次點擊,恢復顯示
2.在窗口的一個區域進行鼠標操作:mouseEnter,mouseExit,mousePress,mouseDrage和mouseClick。在窗口的另一個區域以文字顯示鼠標所進行的相應操作。另外當鼠標進行mousePress,mouseDrage,mouseClick操作時,將顯示一個圖片。當鼠標拖拉時,圖片隨鼠標移動。
展開閱讀全文
總結
以上是生活随笔為你收集整理的java实验1机动车实验目的_《Java程序设计》实验指导书.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么python除法结果会有小数点0_
- 下一篇: 服务器不能访问共享文件夹权限,win访问