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操作时,将显示一个图片。当鼠标拖拉时,图片随鼠标移动。

展开阅读全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

很多selenium学习者被浏览器弹出的文件上传、下载框折磨的痛不欲生&#xff0c;今天博主就带你们轻松搞定上传和下载问题。上传上传弹框文件上传是所有UI自动化测试都要面对的一个头疼问题&#xff0c;要处理这个问题&#xff0c;我们需要&#xff1a;首先&#xff0c;要区分出…

mysql vim 命令_Vim基本命令必知必会

光标移动定位方式hjkl (强例推荐使用其移动光标&#xff0c;但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头0 → 数字零&#xff0c;到行首^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格&#xff0c;tab&#xff0c;换行&#xff0c;回车等)$ →…

python执行语句转换成str_python3.x,_python3.4.3如何转换str字符串?,python3.x - phpStudy...

python3.4.3如何转换str字符串&#xff1f;#codingutf8import pymssqlclass MSSQL:def __init__(self,host,user,pwd,db):self.host hostself.user userself.pwd pwdself.db dbdef __getConnect(self):"""得到连接信息返回&#xff1a; conn.cursor()"…

java中strictfp么意思_什么时候应该在java中使用“strictfp”关键字?

Strictfp确保您从每个平台上的浮点计算获得完全相同的结果。如果不使用strictfp&#xff0c;JVM实现可以在可用的地方使用额外的精度。Within an FP-strict expression, allintermediate values must be elementsof the float value set or the doublevalue set, implying that…

python导入包的输入法_python 模块和包的导入

http://www.cnblogs.com/linhaifeng/articles/6379069.html1,模块开源模块https://pypi.python.org/pypipip/ easy_install安装python setup.py buildpython setup.py installpip install xxxx添加环境变量import os,sysprint (os.path.dirname(os.path.dirname(os.path.dirnam…

java 包权限 子包_Java 包和访问权限

一开始学Java&#xff0c;就用的eclipse。对包的印象就是右键新建而已。至于导入包&#xff0c;等报错了再导。被IDE奴役的傻孩子。现在就清晰地梳理一遍吧~本文基于Mars老师的Java4Android视频。包的作用软件包为Java类提供了命名空间。根据包名&#xff0c;会生成相应的文件夹…

python动态表情包下载_Python从eif中导出qq表情的gif图片

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#!/usr/bin/pythonTestfrom sys import stdoutfrom time import sleepffile(t.eif,rb)resultDirresultreadBytesreadingBytetempArr3[,,]tempArr8[,,,,,,,]#End Of Gif In EifstartFlag[\x47,\x49,\x46]endFlag1list(49454E44AE426…

java中dll在cas中不生效_java中你所不知道的CAS操作

1.CAS是什么Compare and Swap(比较并操作)&#xff0c;由处理器架构支持&#xff0c;语义是如果当前值V和旧值A相同&#xff0c;则将当前值修改为B&#xff0c;如果不相同则不修改。CAS操作采用的是乐观锁技术&#xff0c;当多线程同时修改某个变量时只有一个成功&#xff0c;其…

内存条上面参数详解_为什么买内存条要看时序?别以为内存频率高性能就好

2016年开网吧买了400多根DDR4 8G内存条&#xff0c;一根180。2017年网吧赔了钱&#xff0c;我把电脑卖了&#xff0c;内存600一根&#xff0c;结果开网吧的钱赚回来了。囤内存挣回了开网吧的钱转眼间到2019年&#xff0c;内存就跌回了原来的价钱&#xff0c;200多块就又能买到D…

java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...

玩家类&#xff1a;package playingCardsGame;import java.util.ArrayList;import java.util.List;/** 玩家类*/public class Players {int ID;String name;List handCards;Players(int ID, String name){this.ID ID;this.name name;this.handCards new ArrayList();}}手牌类…

android 获取monkey日志_Android压力测试:monkey压力测试实战

主要分享的主题是 Android App 专项测试&#xff0c;通过 monkey 进行压力测试。一.测试步骤1.安装ADB2.连接被测手机和电脑3.打开CMD命令行4.输入monkey命令adb shell monkey -p your.package.name?--pct-touch 30?--ignore-crashes ?--ignore-timeouts--throttle 250?-s …

java工程怎么构造成moven_将普通java工程结构改为由maven管理的工程结构域

第一次尝试些博客记录一下自己的学习心得!1. http://maven.apache.org/download.cgi 这是maven 的下载链接进入链接下载一个maven 包这是我的windows10 系统下载的版本2 . 将下载好的文件解压后放入任意位置(一般建议放到自己常用的文件夹下边)并记住该路径G:\xiangmuwar …

php mysql 聊天室_聊天室phpmysql(一)

//第一个页面 name"index1.php"include "../signup/mysql.php";$time1time();//$userid983530409;echo $n;if($n1){$useridtime();$nick"g".$userid;$last_time$userid;$sql"insert into chat_user (userid,id,last_time) values ($us…

在python中求小于100的所有合数_python输出100以内的质数与合数

__author__ Yue Qingxuan# -*- coding: utf-8 -*-#求质数p[2]for i in range(2,101):for temp in range(2,i):if i%temp0:breakprint(i,i,temp,temp)elif tempi-1:p.append(i)print(\n以下打印质数&#xff1a;)print(p)#求合数list[]for i in range (4,100):for j in range(2…

python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条

1 简介在日常工作中&#xff0c;我们运行程序经常会用到「循环迭代」&#xff0c;假如这个执行时间很短&#xff0c;那倒也无所谓。但是有一些过程耗时蛮长的&#xff0c;给其加上「进度条」(progress bar)&#xff0c;可以帮我们监控代码执行进度&#xff0c;以及过程出现异常…

acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

如果您的磁盘空间不足&#xff0c;可以使用 Windows 10 中内置的工具来清理垃圾文件、应用程序和游戏等&#xff0c;以优化硬盘空间。使用这些清理工具不仅能够释放空间&#xff0c;而且还有助于提高系统性能。下面小编就为大家汇总介绍 几种种最佳快捷方法&#xff0c;来释放 …

python中astr是啥_python的基本操作

该来的还是来了&#xff0c;早先某个大胖子建议我写关于python基本操作的博客&#xff0c;当时没上心&#xff0c;现在来补点账&#xff0c;也姑且算是对往昔一点回忆吧。对了&#xff0c;那胖子&#xff0c;姓王&#xff0c;所幸不住我隔壁。闲言少叙&#xff0c;python和pych…

python字典popitem和pop_python字典popitem_python 字典之pop() and popitem()

字典删除方法&#xff1a;pop()和popitem()&#xff0c;这两种种方法的作用不同&#xff0c;操作方法及返回值都不相同。pop (key[,default])其中&#xff0c;key是必选参数&#xff0c;必须给出&#xff0c;default是可选参数&#xff0c;可以不给出。如果键值key在字典中存在…

python20个常用语法_这20个常规Python语法你都搞明白了吗?

原标题&#xff1a;这20个常规Python语法你都搞明白了吗&#xff1f;还没关注&#xff1f;Python简单易学&#xff0c;但又博大精深。许多人号称精通Python&#xff0c;却不会写Pythonic的代码&#xff0c;对很多常用包的使用也并不熟悉。学海无涯&#xff0c;我们先来了解一些…

java ftp上传超时_有关java的ftp上传文件时断网的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我有一个java的ftp程序&#xff0c;他既是客户端又是服务端&#xff0c;我把程序放在两台电脑上运行&#xff0c;computer1和computer2&#xff0c;在computer1为文件上传端&#xff0c;computer2为文件的接收端&#xff0c;在comp…