JAVA实验报告

JAVA实验报告


2024年3月11日发(作者:)

JAVA实验报告

实验一 Java开发环境及基本语法

一、实验目的

1、掌握常用的 Java 集成开发环境的使用,特别是 Eclipse 和 NetBeans。 2、掌握 Java 基

本语法,重点是面向对象的思想和语法。 3、掌握控制台下(应用程序)的输入输出方法,

作为后续部分实验的基础。

二、实验类型 设计型。

三、实验内容

1、打开实验室计算机上的集成开发环境 Eclipse 或 NetBeans(重点是 Eclipse)

了解开发软件的各个菜单功能。会创建 java 项目(Project),会编辑和编译、运行项目代码。、。

2,验证和学习所给的几个例子程序及其讲解。然后自己编写一个至少由一个类构成的 Java

程序,其

功能是在运行后,能接收用户输入一个学生的姓名以及 java 课的成绩(百分制),并输出

对该学生成绩是 否达到 60 分的及格分的判断(可使用 if 语句)。例如,输入学生姓名

李明,然后输入成绩 50,则 输 出“ 李

明的成绩为不及格”。

3、编写一个程序来表示长方体的长宽高等数据并有计算体积的函数可供调用,长方体类从

矩形类继

承而来。程序运行时能接受输入任意的 3 个数作为长方体的长、宽和高,然后能够输出所

输入的长宽高 及所计算出的体积。注意不能把代码全部写在 main 函数里面,不能直接输

出长宽高的乘积。

代码如下;

第一个

import r;

String str; // 定义一个字符串变量str

int i; // 定义一个整型变量i

Scanner sc = new Scanner(); // 定义一个Scanner对象,从

("输入学生姓名");

str = (); // 等待用户输入任意一个字符串,它会被存到str中

n("姓名:" + str); // 输出字符串str

("输入学生的分数:");

public class Test{

public static void main(String[] args) {

接受输入

i = t(); // 等待用户输入任意一个整数,它会被存到i中

if(i<60)

("他的JAVA不及格,成绩是" + i );

else

n("他的JAVA成绩是:" + i); // 输出整数i

}

}

第二个

import r;

public class wwh {

public static void main(String[] args) {

int Long; // 矩形的长

int wide; // 矩形的宽

int High; // 长方体的高

Scanner sc = new Scanner();

("输入长");

Long = t();

("输入宽");

wide=t();

("输入高");

High=t();

Tj T=new Tj(Long,wide,High);

1();

}

}

class Vehicle

{

int Long; // 矩形的长

int wide; // 矩形的宽

Vehicle(int Long,int wide)

{

=Long;

=wide;

}

int getArea()

{

return Long*wide;

}

void show()

{

n("长:"+Long);

n("宽:"+wide);

n("矩形的面积为; "+a());

}

} //

class Tj extends Vehicle

{

int High; // 载人数

Tj(int Long,int Wide,int High)

{

super(Long,Wide); // 调用父类的构造函数,对从父类继承而来的成员变量进行

初始化

=High;

}

int getTiji()

{

return a()*High;

}

void show1()

{

();// 调用父类方法

n("长方体的高为:"+High);

n("长方体的体积;"+i());

}

}

实验二 系统类和数组

一、实验目的 1、通过字符串处理类的应用,掌握系统类的使用方法。

2、掌握数组的定义和使用。

3、进一步掌握 Java 程序设计的基本过程和基本方法。

二、实验类型 设计型

三、实验内容

用字符串输入的方式编写一个简单的通讯录。此通讯录由多条记录构成。每条记录包括一个

联系人

的姓名、性别、电话、通信地址,并具有查询、增加、修改、删除等功能,且每执行一次功

能操作后,

可以选择用类似以下的格式,输出通讯录的所有信息记录: 编号 姓名 性别

电话 通信地址

01

02 李四 女 456789 福建

张三 男 123456 北京

此处做一简单的参考性质的提示:可考虑用数组分别存储姓名,性别,电话,通信地址,那

么查询,

增加、修改、删除操作就可转换为对数组元素的操作。

代码如下;

import r;

public class address{

public static void main(String[] args) {

String id;//编号

String num;//电话;

String name; //姓名

String sex;//性别

String dr;//地址

Scanner sc = new Scanner();

String[][] m = new String[10][5];

n("你需要创建几条通讯录");

int u ;

u= t();

n("请输入 编号 姓名 性别 号码 地址");

for(int i=0;i

{

}

n("创建后的通讯录为");

n("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

n("编号 姓名 性别 号码

for(int i=0;i

{

}

n("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

for(int y=0;y<3;y++)

{

n("请 根据你的需要选择,增加请输入1,查询请输入2,

(m[i][0]+"t");

(m[i][1]+"t");

(m[i][2]+"t");

(m[i][3]+"t");

n(m[i][4]+"t");

m[i][0]=();

m[i][1]=();

m[i][2]=();

m[i][3]=();

m[i][4]=();

地址");

删除请输入3,");

int n= t();

n("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

n("编号 姓名 性别 号码

for(int i=0;i

{

}

n("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

break;

n("请输入查找编号:");

String a = ();

for(int i=0;i

{

if(m [i][0].equals(a))

{

n("查找成功!");

n("编号 姓名 性别 电话 地址

(m[i][0]+"t");

(m[i][1]+"t");

(m[i][2]+"t");

(m[i][3]+"t");

n(m[i][4]+"t");

(m[i][0]+"t");

(m[i][1]+"t");

(m[i][2]+"t");

(m[i][3]+"t");

n(m[i][4]+"t");

switch(n){

//n("请输入增加通讯录的条数");

//int t= t();

n("输入增加的编号,姓名,性别 号码,地址");

m[u][0]=();

m[u][1]=();

m[u][2]=();

m[u][3]=();

m[u][4]=();

case 1:

地址");

case 2:

");

}

else

n("该联系人不存在!");

}

break;

case 3:

n("请输入删除的编号:");

String e = ();

for(int i=0;i<5;i++)

{

n("删除后的通讯录为");

if(m[i][0].equals(e))

n("删除成功!");

m[i][0]=m[i+1][0];

n("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

n("编号 姓名 性别

号码 地址");

for(int z=0;z

}

}

}

}

}

{

}

(m[z][0]+"t");

(m[z][1]+"t");

(m[z][2]+"t");

(m[z][3]+"t");

n(m[z][4]+"t");

n("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

break;

实验三 图形界面程序的界面设计

一、实验目的

1、掌握 Java 图形界面程序设计的基本思想和步骤。

2、掌握 JDK 中 AWT 包和 Swing 包的基本使用方法和区别。

3、掌握容器和布局的概念和使用。

4、掌握图形界面程序的界面设计方法和步骤。

二、实验类型 设计型

三、实验内容

自己编写所有代码,设计一个程序的界面。该程序的功能要求

是:运行之后,界面要求基本如左图所示。其中界面设计时的顶层

容器要求使用 JFrame(或 Frame),界面上的“简易计算器”

、“运算数一”运算数二”、“运算结果”这些提示标签使用组件 JLabel

(或 Label),输入运算数和输出运算结果使用 JTextField(或

TextField),“相加”“相减”和“全部清零”使用按钮 JButton

(或 Button)

程序代码;

import yout;

import ;

import ;

import n;

import ;

import ;

import ield;

public class JButtonApp{

public JButtonApp(){

out(new FlowLayout());

e(150,200);

JFrame jf=new JFrame();// 定义设计图形界面程序所需的容器对象

JLabel button1=new JLabel(" 简易计算器 ");

JTextField button2=new JTextField(5);

JTextField button3=new JTextField(5);

JTextField button4=new JTextField(5);

JLabel button5=new JLabel("运算符一");

JLabel button6=new JLabel("运算符二");

JLabel button7=new JLabel("运算结果");

JButton button8=new JButton("相加");

JButton button9=new JButton("相减");

JButton button10=new JButton("全部清空");

tentPane().add(button1);

tentPane().add(button5);//往容器上面添加按钮button1。注

意如果是往AWT 中的Frame

tentPane().add(button2);

tentPane().add(button6);

tentPane().add(button3);

tentPane().add(button7);

tentPane().add(button4);

tentPane().add(button8);

tentPane().add(button9);

tentPane().add(button10);

tentPane().setBackground(); //设置颜色

ible(true);

}

public static void main(String[] args) {

JButtonApp jba =new JButtonApp(); //运行,

}

}

实验四 图形界面程序的事件处理

一、实验目的

1、掌握 Java 图形界面程序设计的基本思想和步骤。

2、掌握图形界面程序设计中键盘鼠标事件处理的机制。

3、了解常用的监听器接口及其方法和作用。

4、掌握图形界面程序设计中事件处理的方法和步骤。

二、实验类型 设计型

三、实验内容

在上一个实验(实验三)中,我们设计了一个简易计算器的界面。但仅仅要求设计出其界面,

而没

有要求进行事件处理。在本次实验中,请实现其事件处理。使得程序运行之后,当输入两个

运算数后,

点击“相加”或者“相减”按钮,两数相加或相减的结果就会显示在“运算结果”框中。 如

果点击“全部清零”按钮,那么两个运算数输入框和运算结果框中就会完全被清空。

代码如下;

import yout;

import ;

import n;

import ;

import ;

import ield;

import Event;

import Listener;

public class butt implements ActionListener

{

public butt(){

out(new FlowLayout());

e(150,200);

tentPane().add(b1);

tentPane().add(b5);//往容器上面添加按钮button1。注意如果

JFrame jf=new JFrame();// 定义设计图形界面程序所需的容器对象

JLabel b1=new JLabel(" 简易计算器 ");

JTextField b2=new JTextField(5);

JTextField b3=new JTextField(5);

JTextField b4=new JTextField(5);

JLabel b5=new JLabel("运算符一");

JLabel b6=new JLabel("运算符二");

JLabel b7=new JLabel("运算结果");

JButton b8=new JButton("相加");

JButton b9=new JButton("相减");

JButton b10=new JButton("全部清空");

是往AWT 中的Frame

tentPane().add(b2);

tentPane().add(b6);

tentPane().add(b3);

tentPane().add(b7);

tentPane().add(b4);

tentPane().add(b8);

tentPane().add(b9);

tentPane().add(b10);

tentPane().setBackground();

ionListener(this);

ionListener(this);

ionListener(this);

ible(true);

}

public static void main(String[] args) {

butt jba =new butt(); //运行,

}

public void actionPerformed(ActionEvent evt) //实现接口中的方法,进行

具体的事件处理

{

String s1= t();

if((rce()==b8)) //当用户是点击的是相加

{

String s3 =ng(f1+f2);

t(s3);

}

else if((rce()==b9))//当点击的是相减

{

String s3 =ng(f1-f2);

t(s3);

}

else if((rce()= }

=b10))

{

t(" ");

t(" ");

t(" ");

}

String s2=t();

float f1=loat(s1);

float f2=loat(s2);

实验五 异常

一、实验目的

1、掌握异常的概念、作用、分类和进行异常处理的语法结构。

2、了解系统异常类的体系和系统定义的常见标准异常。

3、掌握用户自定义异常类的定义和抛出异常的方法。

4、通过掌握异常来分析调试程序的编译错误和编写更健壮的程序。

二、实验类型 设计型

三、实验内容

1、标准异常:设计一个程序,使得其运行时,可以接受用户输入若干个整数并依次存入数

组中,不

限定输入数的个数,使得在输入数的个数超过数组的实际大小时产生数组下标越界异常

(ArrayIndexOutOfBoundsException)。程序代码中“不需要”对异常进行捕获处理,观察

异常产生时程序

运行是否被中断,编译器产生了怎样的提示。

2、自定义异常:设计一个新的程序或者完善题目 1 的程序,使得其运行时,可以接受用户

输入若干

个数并依次存入数组中。要求用户输入的整数必须大于 0 小于 100。如果不符合这个范围

则抛出异常。请自定义一个异常类来表示这种情况,并在用户的输入不符合要求时抛出该异

常。

代码一

import r;

public class exception{

}

代码二

import r;

class myexcept extends Exception{

public static void main(String[] args) {

}

Scanner sc = new Scanner();

int i=0;

String[] m = new String[2];

("输入几个数");

int a = t();

for(i=0;i

{

}

m[i]=();

}

public myexcept()

{

}

n("输入错误,必须0-100的数字");

public class myexception{

public static void f(int n)throws myexcept

{

}

public static void main(String[] args){

}m[i]=n;

i++;

}

("数组为 ");

for(int w = 0; w <; w++)

int m[] = new int [10];

int i = 0;

Scanner sc = new Scanner();

("输入0-100的数");

while(i<)

{

int n = t();

try {

}

if(n<0||n>100)

throw new myexcept();

f(n);

catch(myexcept e){

continue;

}

}

实验六 多线程

一、实验目的

1、掌握线程和多线程的概念。

2、掌握创建线程的两种方法及其区别。

3、了解线程的启动、终止、同步、互斥和优先级等概念。

二、实验类型 设计型

三、实验内容

1、编写一个程序,其功能是运行之后,其中有一个线程可以输出 20 次你的学号,另一个

线程会输出 20 次你的姓名。

2、编写一个图形界面程序,运行之后,让其中有一个线程能在界面上不断显示系统当前时

间(获取时间可查询 ar 类,它包含了多个用于获得系统时间的函数)。

另让一个线程可以在界

面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时间现在是 8:00 到

9:00,则提示

用户该上课;现在是 23:00 到 8:00,则提示用户该休息)

代码一

class MyThread implements Runnable {

public void run() {

for (int i = 1; i <= 20; i++) {

n("第" + i + "次执行线程"+

tThread().getName());

//n(""+ tThread().getName());

try {

tThread().sleep(500);//睡眠500ms给其它线程运行机会,试试不

要会怎样

}

catch (InterruptedException e) {

tackTrace();

}

}

}

public static void main(String args[]) {

Thread t1 = new Thread(new MyThread(),"thread 1"); // 创建线程1的对象,并

//通过第二个参数将其命名为thread 1

Thread t2 = new Thread(new MyThread(),"thread 2"); // 创建线程2的对象,并

e("1000380207");

e("万芳"); //通过第二个参数将其命名

为thread 2

(); //启动两个线程运行

(); //虽然t2的启动表面上好像在后面,实际上两个线程的执行并无先后之分,

//t2的执行甚至有可能在t1之前,看系统的调度情况,可以多执行几次看看

}

}

代码二

import yout;

import .*;

import rea;

import DateFormat;

import ar;

public class time{

JFrame jf;

JLabel labl1;

static JLabel labl2;

static JLabel labl3;

thread1 t1 =new thread1();

thread2 t2 =new thread2();

public time()

{

}

public static void main(String args[])

jf=new JFrame("工作线程");

labl1 =new JLabel("当前时间");

labl2 =new JLabel("");

labl3 =new JLabel("");

out(new FlowLayout());

(labl1);

(labl2);

(labl3);

e(200, 150);

ible(true);

(); //两个线程都启动

();

}

{

}

class thread1 extends Thread{

public String showtime() // 定义一个用于显示当前系统时刻的函数

{

}

public void run(){

while(true) { // 显示系统当前时间

try {

String times=showtime();

t(times);

(1000); // 两次显示时间之间休眠1000ms(即1秒),

SimpleDateFormat SDF = new SimpleDateFormat("yyyy'年'MM'月

// 以前面所设定的格式显示当前时间

Calendar now = tance();

String time = (e());// 得到当前日期和时间

return time;

time frm =new time();

'dd'日'HH:mm:ss");

以便观察显示出的时间变化

}

}

class thread2 extends Thread //线程类thread1

{

public void run()

{

while(true) { // 显示系统当前时间

Calendar cal= tance();

int h, mi, s;

}

}

catch (InterruptedException e) {

tackTrace();

}

h = (_OF_DAY); // 获取小时

mi = (); // 获取分钟

s = (); // 获取秒钟

try {

if(s>0&&s<10)

t("睡觉睡觉");

if(s>10&&s<20)

t("学习学习");

(1000); // 两次显示时间之间休眠1000ms(即1

秒),以便观察显示出的时间变化

}

}

}

}

catch (InterruptedException e) {

tackTrace();

}

实验七 流与文件

一、实验目的

1、掌握 java 中流的概念和作用。

2、掌握文件读写所使用的相关流(类)。

二、实验类型 设计型

三、实验内容

假设已经有一个文本文件中存放着职工的工资记录。每个职工的记录包含姓名、工资、津贴

三项。

每条记录可以存放于一行(三项之间的间隔符可以自己决定),也可以将每条记录的三项依

次分别存放在

文本文件中的每一行。请设计一个程序,可以让用户选择打开这个文件查看其内容,并可以

让用户选择

把每个职工的工资增加 10%之后又存回原来的文件。

代码一

package 实验7;

import .*;

import .*;

import .*;

import .*;

public class file4

{

public static void main(String args[])

{

}

class file4Frm extends Frame implements ActionListener

file4Frm frm=new file4Frm();

}

{

FileDialog sv; //定义文件对话框对象sv,op

FileDialog op;

Button btn1,btn2,btn3,btn4; //定义图形界面所需组建

TextArea tarea;

TextArea tarea2;

TextArea tarea3;

TextArea tarea4;

String Directory;

String getFile;

Label lable1,lable2,lable3;

file4Frm() //构造函数初始化图形界面

{

super("打开和保存文件");

setLayout(null); //将布局设置为null

setBackground();

setSize(600,500);

setVisible(true);

btn1=new Button("Open");

btn2=new Button("Save");

btn3=new Button("Close");

btn4 = new Button("工资增加10%");

tarea=new TextArea("");

tarea4=new TextArea("");

lable1 = new Label("职工姓名");

lable2 = new Label("工资");

lable3 = new Label("津贴");

add(btn1); add(btn2); add(btn3);add(btn4);//将组建添加到容器

add(tarea);

add(lable1);

add(lable2);

add(lable3);

add(tarea4);

nds(30,50,330,200); //设置的是null布局,所以设置组建的位置

和尺寸

nds(30,300,330,200);

nds(520,200,50,30);

nds(520,260,50,30);

nds(520,320,50,30);

nds(520,380,80,30);

sv=new FileDialog(this,"保存",); //保存功能

op=new FileDialog(this,"打开",); //打开功能

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

ionListener(this);

addWindowListener //定义事件适配器实现图形界面窗口的关闭功能

(

new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

(0);

}

}

);

}

public void actionPerformed(ActionEvent e) //界面上的事件处理

{

if(rce()==btn1) //如果点击的是open按钮

{

String str;

ible(true);

try //将文件打开读取到界面上的TextArea组件中显示出来

{

File fl=new File(ectory(),e());

FileReader fr=new FileReader(fl);

BufferedReader br = new BufferedReader(fr);

while((str=ne())!=null)

(str+'n');

();

}

catch(Exception e1)

{

}

}

if(rce()==btn2) //如果点击的是save按钮

{

ible(true);

try //将TextArea中的内容写入到文件中保存

{

File fl=new File(ectory(),e());

Directory = ectory();

getFile = e();

FileWriter fw=new FileWriter(fl);

BufferedWriter bw = new BufferedWriter(fw);

String gt=t();

(gt,0,());

();

();

}

catch(Exception e1)

{

}

}

if(rce()==btn3) //如果点击的是close按钮

{

(0);

}

if(rce() == btn4)

{

String str = t();

String s[];

s= ("n");

for(int i = 0; i < ;i++)

{

str = "";

for(int i = 0; i<;i++)

{

str = str+'n'+s[i]+'n';

if (i%3 == 1)

{

double temp = f(s[i]).floatValue();

temp = temp * 1.1;

s[i] = ng(temp);

}

}

}

t(str);

//ible(true);

try //将TextArea4中的内容写入到文件中保存

{

FileWriter fw=new FileWriter("C:Documents and

SettingsAdministrator桌面TEST .txt"); //制定了文件的保存路径

BufferedWriter bw = new BufferedWriter(fw);

String gt=t();

(gt,0,());

();

();

}

catch(Exception e1)

{

}

}

}

}

实验八 网络

一、实验目的

1、掌握 TCP 和 UDP 网络程序设计的模型。

2、掌握 TCP 和 UDP 程序设计的基本方法和所使用的系统类。

3、了解基于应用层 http 协议的程序的设计以及使用系统类的组播、广播等网络程序设计。

二、实验类型 设计型。

三、实验内容

先熟悉所给的示例,了解网络编程的一般基本概念。然后两个同学为一组,分别设计一对控

制台下的 TCP 通信程序的客户端和服务器端,然后双方要能够相互发送和反馈信息进行无

限次连续通信,直到其中一方发送表示结束通信的“end”字符串,然后接收方也返回一个

“end”,双方结束通信。

若可能的话,建议最好设计出图形界面下的程序(即设计成一个简单的网络聊天程序)。可

在本地机

上做测试,或两个同学为一组在不同的机器上作测试都可以,要将服务器地址和端口号作为

参数,在运

行中可以进行修改。对于本机上测试,服务器地址使用 127.0.0.1 或者本机实际 IP 地址。

在网内不同机器上测试,要给出正确的服务器 IP 地址或名称。

代码如下

import edReader;

import edWriter;

import ption;

import treamReader;

import StreamWriter;

import riter;

import ;

public class Client

{

public static void main(String args[]) throws IOException

{

Socket socket1=new Socket("127.0.0.1",2288);

try

{

n("connection to server accepted:"+socket1);

PrintWriter out=new PrintWriter(new BufferedWriter(new

OutputStreamWriter(putStream())),true);

//下面向服务器输出数据

n("this is the data from client");

//下面接收服务器反馈过来的数据

BufferedReader in= new BufferedReader(new

InputStreamReader(utStream()));

String str=ne();

n(str);

}

finally

{

n("client closing socket");

();

}

}

}

public class Server

{

public static void main(String args[]) throws IOException

{

ServerSocket s=new ServerSocket(2288);

.println("serversocket:"+s);

try

{

Socket

socket1=();

try

{

n("connection to client accepted:"+socket1);

BufferedReader in= new BufferedReader(new

InputStreamReader(utStream()));

PrintWriter out= new PrintWriter(new BufferedWriter(new

OutputStreamWriter(putStream())),true);

String str=ne();

n("服务器端接收到客户端的数据是:"+str);

n("这一行是服务器发送过来的数据,若你看到则表示收到");

}

finally

{

n("server closing socket");

();

}

}

finally

{

();

}

}

}


发布者:admin,转转请注明出处:http://www.yc00.com/web/1710121246a1704084.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信