JAVA第五次实验报告
- 格式:doc
- 大小:54.50 KB
- 文档页数:6
JAVA实验报告5异常处理实验异常处理是Java程序设计中非常重要的一部分,能够有效地处理程序在运行过程中可能出现的异常情况。
在本次实验中,我们主要学习了Java中的异常处理机制,并对其进行了实践。
一、实验目的:1、学习Java中的异常处理机制;2、掌握如何使用try-catch来处理异常;3、了解Java中常见的异常类和异常处理语句的使用方法。
二、实验内容:1、编写一个Java程序,在程序中故意引发一个异常,然后使用try-catch语句来处理该异常,并在catch块中打印异常的详细信息;2、使用多个catch块来处理不同类型的异常,并在每个catch块中打印对应异常的详细信息;3、使用finally块来执行一些必须要执行的代码,比如关闭文件等。
三、实验步骤:1、首先,我们编写一个简单的Java程序,使用try-catch语句来处理异常。
假设我们在程序中故意除以0,然后在catch块中打印出异常信息。
代码如下:```public class ExceptionHandlingDemopublic static void main(String[] args)tryint result = 10 / 0;} catch (ArithmeticException e)System.out.println("发生异常:" + e);}}```2、接下来,我们使用多个catch块来处理不同类型的异常。
假设我们在程序中使用一个空数组,然后尝试访问数组的第一个元素。
如果数组为空,则会抛出ArrayIndexOutOfBoundsException异常。
代码如下:```public class ExceptionHandlingDemopublic static void main(String[] args)int[] array = new int[0];tryint firstElement = array[0];} catch (ArrayIndexOutOfBoundsException e)System.out.println("发生异常:" + e);} catch (Exception e)System.out.println("未知异常:" + e);}}```3、最后,我们使用finally块来执行一些必须要执行的代码。
JAVA实验报告5异常处理实验一、实验目的1. 了解Java异常处理机制;2. 掌握Java中异常处理的方式;3.熟悉自定义异常的方法。
二、实验内容本实验通过编写代码来体验Java中的异常处理机制,主要包括以下几个方面:1.了解异常的基本知识;2. 学习try-catch语句的使用方法;3. 掌握throws关键字的用法;4.编写自定义异常类。
三、实验步骤1. 编写一个“除法计算器”类DivideCalculator,该类有一个名为divide的方法,用于计算两个整数的商,并返回结果。
如果除数为0,则会抛出一个自定义的异常类DivideByZeroException;2. 在DivideCalculator类中,先使用try-catch语句来捕获DivideByZeroException异常,如果除数为0,则在控制台上打印出“不能除以0”的错误信息;3. 在该方法中再使用throws关键字将异常抛出,以便调用方能捕获该异常;4. 编写一个测试类CalculatorTest来测试DivideCalculator类,将两个整数输入给divide方法,观察控制台输出的结果;5. 在CalculatorTest类中使用try-catch语句来捕获DivideByZeroException异常,并打印出错误信息;6. 在CalculatorTest的main方法中调用divide方法,传入5和0作为参数;7.运行程序,观察控制台输出的结果。
四、实验结果根据实验步骤中的代码编写,可得到以下实验结果:1.当传入的除数为非零整数时,程序正常执行并返回正确结果;2. 当传入的除数为0时,程序会抛出自定义的异常DivideByZeroException,并在控制台上打印出错误信息"不能除以0";3. 在CalculatorTest的try-catch语句中捕获到DivideByZeroException异常,并打印出错误信息"不能除以0"。
题目:简易聊天班级学号:姓名:一、实验内容实现简易两个客户端的聊天。
二、实验步骤1、创建服务器2、创建客户端,并与客户端建立连接。
3、实现两个客户端之间进行简单的聊天。
三、源程序部分源程序服务器端:public class Server {// 保存在线人的套接字和名字HashMap<String, Socket> online = new HashMap<String, Socket>();private UserDao dao = new UserDao();public void server() {try {// 服务器端ServerSocket server = new ServerSocket(2222);while (true) {Socket socket = server.accept();new QQReader(socket).start();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}class QQReader extends Thread {private Socket socket;public QQReader(Socket socket) {this.socket = socket;}// 判断某人是否在线,返回true表示不在线public boolean isOnline(String name) {return online.get(name) == null ? true : false;}public String getonlineName() {Set<String> onlineName = online.keySet();Iterator<String> it = onlineName.iterator();StringBuffer sf = new StringBuffer("ONLINELIST:");while (it.hasNext()) {sf.append(it.next() + ":");// ONLINE:zhangsan1:zhangsan2}String sendText = sf.toString();return sendText.substring(0, sendText.length() - 1);}public void sendMessageToAllButSelf(String info, String self) {try {// 给所有已经上线的人发送好友在线信息Collection<Socket> onlineSocket = online.values();Iterator<Socket> iterator = onlineSocket.iterator();while (iterator.hasNext()) {Socket temp_socket = iterator.next();if (!temp_socket.equals(online.get(self))) {BufferedWriter temp_writer = new BufferedWriter(new OutputStreamWriter(temp_socket.getOutputStream()));// temp_writer.write("ONLINE:" + infos[1] + "\r\n");temp_writer.write(info);temp_writer.flush();}}} catch (IOException e) {e.printStackTrace();}}@Overridepublic void run() {try {BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));String info = "";while ((info = reader.readLine()) != null) {String[] infos = info.split(":");if (info.startsWith("LOGIN")) {if (dao.select(infos[1])) {// 首先判断是否已经在线if (isOnline(infos[1])) {online.put(infos[1], socket);writer.write("LOGIN:OK\r\n");writer.flush();sendMessageToAllButSelf("SYSTEM:ONLINE:" + infos[1]+ "\r\n", infos[1]);writer.write(getonlineName() + "\r\n");writer.flush();} else {writer.write("LOGIN:RELOG\r\n");writer.flush();}} else {writer.write("LOGIN:REFUSE\r\n");writer.flush();}} else if(info.startsWith("CHA T")){Socket temp_socket = online.get(infos[2]);if(temp_socket != null){BufferedWriter temp_writer = new BufferedWriter(new OutputStreamWriter(temp_socket.getOutputStream()));//原样转发不做处理自己加上\r\ntemp_writer.write(info+"\r\n");temp_writer.flush();}else{if (infos[2].equals("所有人")) {sendMessageToAllButSelf(info + "\r\n", infos[1]);}}}else if(info.startsWith("EXIT")){//移除要下线的人online.remove(infos[1]);//给还在线上的用户发送好友下线信息将树的刷新操作交给客户端了,由于jtree不熟,移除指定名的结点相对麻烦/** 第二个参数指的是给所有人发送,但是除去自己,现在没有自己,我们就传原因是由于map 中从未放置过"" */sendMessageToAllButSelf(getonlineName() + "\r\n", "");sendMessageToAllButSelf("SYSTEM:EXIT:" + infos[1] + "\r\n", "");}} } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {new Server().server();}}客户端:public class Chat {private String name;private Socket socket;private JFrame frame;private JTextArea area;private JScrollPane pane;private DefaultMutableTreeNode root;//根结点private DefaultTreeModel model;//树模型private JTree tree;private JLabel lbl;private JTextField field;//保存对方的姓名private JTextField txt;//要发送的内容private JButton btnSet;//发送按钮private JPanel panelSouth;public Chat(Socket socket,String name){this.socket = socket; = name;}private Reader reader;public void init(){frame = new JFrame();area = new JTextArea(25,30);area.setLineWrap(true);pane = new JScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZON TAL_SCROLLBAR_NEVER);root = new DefaultMutableTreeNode("我的好友");model = new DefaultTreeModel(root);tree = new JTree(model);model.insertNodeInto(new DefaultMutableTreeNode(), root, 0);panelSouth = new JPanel();lbl = new JLabel( + "对:");field = new JTextField(15);txt = new JTextField(25);btnSet = new JButton("发送");frame.add(pane);frame.add(tree,BorderLayout.EAST);panelSouth.add(lbl);panelSouth.add(field);panelSouth.add(txt);panelSouth.add(btnSet);frame.add(panelSouth,BorderLayout.SOUTH);frame.setBounds(200, 240, 900, 400);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);new Reader().start();tree.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {String path = tree.getSelectionPath().toString();String[] paths = path.split(",");if(paths.length == 2){String id = paths[1].substring(0, (paths[1].length() - 1)).trim();field.setText(id);}else{field.setText("");}}});btnSet.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//判断是否有人发送//判断是否有发送的消息String to = field.getText().trim();String comms = txt.getText().trim();if(!to.equals("") && !comms.equals("")){try {BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(Chat.this.socket.getOutputStream()));writer.write("CHA T:" + + ":" + to + ":" + comms +"\r\n");writer.flush();txt.setText("");area.setText(area.getText() + + "\t" + newSimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + "\r\n");area.setText(area.getText() + comms + "\r\n"} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}else{JOptionPane.showMessageDialog(frame, "发送人或者发送消息为空", "警告",JOptionPane.W ARNING_MESSAGE);}}});frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubtry {//将下线信息发送给服务器端BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));writer.write("EXIT:" + + "\r\n");writer.flush();Thread.sleep(50);//保证数据能够正确的发送到服务器端//关闭socketreader.setFlag(false);socket.close();} catch (Exception e1) {// TODO Auto-generated catch block//e1.printStackTrace();} }});}class Reader extends Thread{private boolean flag = true;public void flushTree(String[] online){root.removeAllChildren();//移除某一个根结点下的所有的叶子节点//添加自己model.insertNodeInto(new DefaultMutableTreeNode(), root, 0);model.insertNodeInto(new DefaultMutableTreeNode("所有人"), root, root.getChildCount());//添加除自己之外的结点for(String name:online){if(!name.equals()){model.insertNodeInto(new DefaultMutableTreeNode(name), root, root.getChildCount());}}model.reload();}public void setFlag(boolean flag){this.flag = flag;}@Overridepublic void run() {try {BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));while(flag){String info = reader.readLine();String[] infos = info.split(":");if(info.startsWith("ONLINELIST")){//更新树flushTree(Arrays.copyOfRange(infos, 1,infos.length));}else if(info.startsWith("SYSTEM:ONLINE")){model.insertNodeInto(new DefaultMutableTreeNode(infos[2]), root, root.getChildCount());model.reload();area.setText(area.getText() + "系统消息" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + "\r\n" + infos[2] + "上线了\r\n");}else if(info.startsWith("CHAT")){area.setText(infos[1] + ":\t" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + "\r\n");area.setText(area.getText()+ infos[3] + "\r\n");field.setText(infos[1]);}else if(info.startsWith("SYSTEM:EXIT")){area.setText(area.getText() + "系统消息" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + "\r\n" + infos[2] + "下线了\r\n");}}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}四、实验结果五、出现的问题及解决的方法。
师大福清分校计算机实验报告〔W5,W6〕院/系:数学与计算机科学系课程名称:Java面向对象程序设计日期:测试报告结果分析注意非法字符2class Letter{char start = 'A';void printLetter(){for(int i = 0;i<25;i++){char c = '0';c = (char)(i+start);System.out.printf("%c ",c);if(i%7==0&&i!=0) System.out.printf("\n");}}}class Letter2{public static void main(String[] args){Letter p = new Letter();p.printLetter();}}3.import java.util.*;public class DengCha3{public static void main(String[] args){DengCha shulie = new DengCha();shulie.setStart(6);shulie.setD(7);System.out.printf("首项为6,公差为7的等差数列的前5项和为%d",shulie.getSum(5));}}class DengCha{int s;int d;int sum ;DengCha(){}void setStart(int s){this.s = s;}void setD(int d){this.d = d;}int getSum(int n){sum = n*s+n*(n-1)*d/2;return sum;}}4.import ng.Math;class SquareEquation{double a;double b;static double c;double x1,x2;SquareEquation(double a,double b,double c){this.a = a;this.b = b;SquareEquation.c = c;}void getRoots(){double temp = b*b-4*a*c;if(temp<0) System.out.println("方程无根\n");else if(temp != 0){x1 = (-b+Math.sqrt(temp))/(2.0*a);x2 = (-b-Math.sqrt(temp))/(2.0*a);System.out.printf("方程有两个不同的实根其中x1=%.2f,x2=%.2f\n",x1,x2);}else{x1 = -b/(2.0*a);System.out.printf("方程有两个一样的实根,值为%f\n",x1);}}}public class SquareEquation4{public static void main(String[] args){SquareEquation yi = new SquareEquation(1,2,3);System.out.println("方程式一为x*x+2x+3=0");yi.getRoots();SquareEquation er = new SquareEquation(4,10,1);System.out.println("方程式二为4x^2+10x=0");er.getRoots();System.out.printf("方程一的常数项为%.2f,方程二的常数项为%.2f",yi.c,er.c);}}5.public class Shiyan_5{public static void main(String args[]){Complex x = new Complex(4.0,2.1);Complex y = new Complex(2.5,5.0);Complex t1 = new Complex( );Complex t2 = new Complex( );t1 =x.add(y);t2 =x.sub(y);t1.print( );t2.print( );}}class Complex{double a;double b;Complex(){}Complex(double a1,double b1){a =a1;b=b1;} Complex add(Complex x){double a1,a2;a1 = a + x.a;a2 = b + x.b;return new Complex(a1,a2);}Complex sub(Complex x){double a1,a2;a1 = a - x.a;a2 = b - x.b;return new Complex(a1,a2);}void print(){System.out.printf("实部%.2f,虚部%.2f\n",a,b);}}说明:系统实施:〔程序流程图、重要过程说明、参数设置、变量的说明等〕测试报告:〔调试输入数据、结果数据或状态。
《Java语言程序设计》上机实验报告(5)实验名称:实验五Java面向对象编程(2) 班级:软件工程 101姓名:周顺权学号: 110029026上机时间:指导教师:王华一、实验内容或题目:1.方法中参数传递---传值调用。
编写一个传值调用的程序。
2.方法中参数传递---调用对象方法。
编写一个调用对象方法的程序。
3.类的继承。
(1)首先预测下列程序的运行结果,然后编译、执行以验证你的预测:(2) 修改Dog类的构造函数,使之可以初始化Dog类中的weight值。
(3) 在Dog类中添加方法getWeight以获得其weight值(4) 修改类JLab0501,使用新的构造函数创建一个名为“snoopy”,重为10的Dog类的对象,并利用其方法输出包括重量在内的各项值。
(5) 要使Dog类对象的speak()方法返回值为“Woof Woof”,应如何做?修改(1)中程序,并验证你的做法。
4.方法的重载。
(1)首先预测下列程序的运行结果,然后编译、执行以验证你的预测:(2)在类JLab0502中添加下列方法:二、实验目的与要求:1.程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值。
2.通过调用对象的方法在方法调用后修改了成员变量的值。
4.(2)编译该程序,观察报错信息,并思考原因。
三、实验步骤与源程序:(1)实验步骤a) 编辑源文件b) 编译c) 运行(2)源代码1:package test5;class XY{int x,y;void setX(int a){x=a;}void setY(int b){y=b;}int getX(){return x;}int getY(){return y;}void ff1(){x=getX()*getX();y=getY()*getY();System.out.println("x^2="+x);System.out.println("y^2="+y);}}public class Involution {public static void main(String args[]){XY xy=new XY();xy.setX(10);xy.setY(10);xy.ff1();}}2:package test5;public class KY3_6 {public static void main(String args[]) {Power p=new Power();p.ff2(10,10);System.out.println("方法调用后x="+p.x+", y="+p.y);}}class Power{int x=10, y=10;void ff2(int passX, int passY) {System.out.println("初始时x="+x+", y="+y);x=passX*passX;y=passY*passY;System.out.println("方法调用中x="+x+", y="+y);}}3(1):class Pet{protected String name;public Pet(String n){name = n;}public String getName(){return name;}public String move(){return "run";}public String speak(){return "";}public String toString(){return "My pet " + name;}}class Dog extends Pet{protected int weight;public Dog(String s){super(s);}}class JLab0501{public static void main(String[] args){Pet myPet = new Pet("George");Dog myDog = new Dog("Spot");System.out.println(myPet.toString() + "\n" + "Speak: " +myPet.speak() +"\n" + myPet.move() + " " +myPet.getName() + "\n");System.out.println(myDog.toString() + "\n" + "Speak: " +myDog.speak() +"\n" + myDog.move() + " " +myDog.getName() + "\n"); }}3(2),3(3),3(4),3(5)(已集合在一起):class Pet{protected String name;public Pet(String n){name = n;}public String getName(){return name;}public String move(){return "run";}public String speak(){return "";}public String toString(){return "My pet " + name;}}class Dog extends Pet{protected int weight=0;void setWeight(int a){weight=a;}int getWeight(){return weight;}public Dog(String s){super(s);// super是指向父类的指针可以通过该指针调用父类//的函数}public String speak(){return "woof woof";}}class JLab0501{public static void main(String[] args){Pet myPet = new Pet("George");Dog myDog = new Dog("Spot");Dog dog=new Dog(“snoopy”);dog.setWeight(10);System.out.println(myPet.toString() + "\n" + "Speak: " +myPet.speak() +"\n" + myPet.move() + " " +myPet.getName() + "\n");System.out.println(myDog.toString() + "\n" + "Speak: " +myDog.speak() +"\n" + myDog.move() + " " +myDog.getName() + "\n");System.out.println(dog.toString()+"\n"+"Speak:"+dog.speak()+"\n"+dog.m ove()+" "+dog.getName()+"\n"+"Weight:"+dog.getWeight()+"\n");}}4(1):public class JLab0502 {public static void test() {System.out.println("test() invoked");}public static int test(int i) {System.out.println("test(" + i + ") invoked");return i;}public static String test(String s) {System.out.println("test(" + s + ") invoked");return s;}public static void test(String s, int i) {System.out.println("test(" + s + ", " + i + ") invoked");}public static void test(int i, String s) {System.out.println("test(" + i + ", " + s + ") invoked");}public static void main(String[] args) {test();test(100);test("test");test("test",100);test(100,"test");}}4(2):添加方法:public static int test(int j) {System.out.println("test(" + j + ") invoked");return j;}四、测试数据与实验结果:1:2:3(1):猜测:My pet GeorgeSpeak:run GeorgeMy pet SpotSpeak:run Spot结果截图:3(2),3(3),3(4),3(5)(已集合在一起):4(1):猜想:test() invokedtest(100) invokedtest(test) invokedtest(test,100) invokedtest(100,test) invoked截图结果:4(2):重载必须保证参数不同。
1.输入阿拉伯数字1,2,3,4,5,在屏幕上输出中文的“一,二,三,四,五”。
2.输入两个整数,如果第一个比第二个大,输出“大”,反之输出“小”。
3.设计一个类A,定义一个字符串类型的变量,设计set()方法赋值,设计get()方法取出值。
设计类B,设用set()方法赋值,在屏幕上输出该值(调用get()方法取值)。
4.设计一个类C,定义一个整型变量x,初值为100,设计disp()在屏幕上显示该值。
设计类D,继承类C,定义整型变量x,初值为99,设计dispD()方法,显示本类的x的值。
再设计方法,显示类C中的x 的值。
5.设计一个类E,定义整型变量q,在构造方法里为其赋值。
设计类F,实例化E的一个对象,输入q的值,并显示。
6.设计一个类G,定义有一个整型参数的构造方法,在构造方法中显示这个参数,定义有两个整型参数的构造方法,在构造方法中显示这两个参数的和。
在类G中设计主方法,实现这两个构造方法。
7. 设计一个类H,定义有两个整型参数的构造方法,在构造方法中计算这两个参数的和。
设计类H1继承类H,将构造方法改为,计算两个参数的和之后,再显示这个和乘以500之后的值。
8.输入N个数,反向输出这N个数。
9.输入1个数,显示200除以这个数的商,要求程序能捕获异常。
10.依次输入5个数,显示最大的那一个,并将最大的那个数写入文件t.txt文件中。
JAVA第五次实验报告实验五:数组的引用类型与多态性实验目的:1.掌握数组的引用类型和多态性的概念和使用。
2. 熟悉Java中数组的创建、初始化和遍历。
3.理解多态性的概念和实现方式。
4. 掌握Java中类和对象的定义和使用。
实验过程:1. 创建了一个名为"Person"的类,拥有一个私有成员变量"name"和一个公有的构造方法和一个公有的成员方法printName(。
2. 创建了一个名为"Student"的类,作为Person类的子类,拥有一个私有成员变量"grade"和一个公有的构造方法和一个公有的覆盖了父类方法的成员方法printName(。
3. 创建了一个名为"Teacher"的类,作为Person类的子类,拥有一个私有成员变量"subject"和一个公有的构造方法和一个公有的覆盖了父类方法的成员方法printName(。
4. 在主函数中,创建了一个长度为5的Person类型的数组,并分别实例化了两个Student对象和两个Teacher对象,并将这四个对象赋值给数组的前四个元素。
5. 遍历数组,调用每个对象的printName(方法,分别输出每个对象的名称。
实验结果:运行程序后,实验结果如下:Student - 1Student - 2Teacher - 1Teacher - 2实验分析:通过以上实验,我们可以看到数组可以存储同一父类引用类型的不同子类对象,这种特性称为多态性。
在遍历数组时,可以调用每个对象的方法,实现多态的效果。
在本实验中,通过将两个Student对象和两个Teacher对象赋值给Person类型的数组,我们实现了多态性。
在遍历数组时,调用每个对象的printName(方法,程序会根据对象的具体类型执行对应的方法。
实验总结:通过本次实验,我学会了如何使用数组的引用类型和多态性。
java实验报告五Java实验报告五一、引言Java是一种面向对象的编程语言,具有跨平台性、安全性和易学性等特点。
本实验报告将介绍我们在学习Java过程中进行的第五个实验。
二、实验目的本次实验的主要目的是通过实践进一步熟悉Java的基本语法和面向对象的编程思想,并掌握Java中的异常处理机制。
三、实验内容本次实验主要分为两个部分:实现一个简单的图书管理系统和异常处理。
3.1 图书管理系统我们设计了一个简单的图书管理系统,主要包括图书类、用户类和图书管理类。
图书类包含图书的基本信息,如书名、作者、出版社等;用户类包含用户的基本信息,如姓名、年龄、性别等;图书管理类实现了对图书和用户的管理功能,如添加图书、删除图书、借阅图书等。
3.2 异常处理在图书管理系统中,我们使用了异常处理机制来处理一些可能发生的异常情况,如图书馆中没有要借阅的图书、图书已被借完等。
我们使用try-catch语句来捕获异常,并根据具体情况进行相应的处理。
四、实验过程4.1 图书管理系统的实现首先,我们定义了图书类和用户类,并在类中定义了相应的属性和方法。
然后,我们创建了一个图书管理类,并在该类中实现了对图书和用户的管理功能。
最后,我们编写了一个测试类,通过创建对象并调用相应的方法来测试图书管理系统的功能是否正常。
4.2 异常处理在图书管理类的方法中,我们使用了try-catch语句来捕获可能发生的异常。
当出现异常时,程序会跳转到catch块中,并执行相应的处理代码。
我们根据具体情况,输出相应的错误信息或进行其他操作,以保证程序的正常运行。
五、实验结果通过测试,我们发现图书管理系统的功能正常运行,并且能够正确处理可能发生的异常情况。
我们成功添加了图书、删除了图书,并能够正确借阅和归还图书。
六、实验总结通过本次实验,我们进一步熟悉了Java的基本语法和面向对象的编程思想。
我们学会了如何设计和实现一个简单的图书管理系统,并掌握了异常处理的基本方法。
第六次实验:GUI标准组件及事件处理一、实验目的了解图形用户界面基本组件:框架、面板、按钮、标签、菜单、列表等的使用方法;了解如何使用布局管理器对组件进行管理;理解和掌握Java 的事件处理机制。
二、实验要求1. 了解Java图像用户界面的开发,掌握基本组件的使用。
2. 掌握编写独立运行的窗口界面的方法,了解菜单和对话框的使用方法。
3. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。
三、实验内容(一)在面板中添加多个组件,并进行合理的布局程序功能:在一个框架(Frame)容器中添加一个面板(Panel)容器,并分别在框架和面板容器中添加组件并使用不同的布局管理方式。
请编写KY7_1.java 程序文件,相关源代码的提示如下。
importjava.awt.*;importjava.awt.Color;public class KY7_1 {public static void main(String args[]){…… //创建一个框架f…… //创建一个面板p…… //把面板p添加到框架f中…… //设置面板p的背景颜色为蓝色p.setLayout(new FlowLayout()); //设置面板p的布局为流式布局…… //在面板p中添加一个标签l…… //在面板p中添加六个按钮Choice c=new Choice ();//创建一个下拉列表c,c.addItem("北京"); // 下拉列表c中有三个选项:北京、上海和天津c.addItem("上海");c.addItem("天津");…… //把列表c添加到面板p中…… //设置框架f的大小和可见性}}将上面程序中的空缺部分添加进去,编译并执行该程序。
将KY7_1.java的完整源程序写在实验报告中。
(二)为窗口添加菜单,并处理由菜单项所引发的事件程序功能:在窗口中添加菜单条,在菜单条中添加菜单,并在菜单中添加菜单项和子菜单。
实验五接口、多态与内部类实验目标:1、理解接口、塑型、多态的概念并能熟练应用;2、熟练掌握接口的定义和使用;3、深刻理解构造方法的调用顺序,理解编写时需要注意的问题;4、了解并学会使用内部类实验任务:1、继承时的多态:目测给出下面代码的执行输出结果,并简单解释每一行输出的原因。
答:首先,该程序的主函数是Vehicle v=new Vehicle();即先声明并实例化一个汽车对象,而v.test();则是调用汽车的测试方法;而test方法里,Vehicle vc=new Car();是将上面的汽车指向了一个具体的小汽车对象;Bus vb=new Bus();将公共汽车指向了一个具体的公共汽车对象;drive();调用汽车的驾驶方法;vc.drive();调用小汽车的驾驶方法;vb.drive();调用公共汽车的驾驶方法;而vc.brake();vb.brake();则是直接调用汽车的刹车方法。
因而运行结果如下:A new bus.Vehicle is drivenCar is drivenBus is drivenVehicle is brakedVehicle is braked2.针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口,应怎样实现。
编写能完成如图功能的程序,并再编写一个简单的应用程序进行多态性测试。
(参考例子5-9;实验4该题是要求用抽象类来实现,在此要求用接口实现,还要进行多态性测试)说明:Instrument表示乐器、Wind表示管乐器、Percussion敲击乐器、Stringed表示弦乐器、Woodwind表示木管乐器、Brass表示铜管乐器。
要求:(1)Instrument为接口,Wind为抽象类,其他为普通类。
这里测试的目的是:我们知道当一个普通类实现一个接口时,必须实现该接口的全部方法,但当这个类是抽象类时,我们还需要实现该接口全部方法吗?如果不需要实现?那么是否直接不理这个方法就一,还是要将这个方法在自己类内部再标记一次为抽象方法。
实验五 Java 输入输出流1.实验目的(1) 掌握输入输出流的总体结构;(2) 掌握流的概念;(3) 了解各种流(包括文件流、管道流、连接文件、过滤流、对象的序列化、随机访问)的使用。
2.实验内容实验题1编写一个Java Application程序,打印命令行输入的所有参数。
[基本要求]编写完整程序。
程序源代码如下:import java.util.Scanner;publicclass Test1 {public Test1() {// TODO Auto-generated constructor stub}publicstaticvoid main(String[] args) {// TODO Auto-generated method stubScanner SCA= new Scanner(System.in);System.out.println("请输入所有参数:");String a=SCA.nextLine();System.out.println("输入所有参数为:");System.out.println(a);}}运行结果如下:实验题2 阅读下面程序,叙述其功能package .nwsuaf.jp;import java.io.FileReader;import java.io.IOException;public class FileViewer {public static void main(String[] args) {System.out.println("Please enter the file path:");try {String fileName = "";while(true) {intreadByte = System.in.read();if(readByte == -1 || readByte == '\r')break;fileName += (char) readByte;}// Reads the file and prints it to the System.out stream.char[] buffer = new char[20];FileReader reader = new FileReader(fileName);while(true) {int length = reader.read(buffer);if(length < 0) // Reads a long as there is more data.break;String text = new String(buffer, 0, length);System.out.print(text);}} catch (IOException e) {e.printStackTrace();}}}[基本要求] 写出本题程序的功能。
java编程基础实验报告Java编程基础实验报告一、引言Java是一种广泛应用于软件开发领域的高级编程语言,具有跨平台的特性,因此备受开发者的青睐。
本篇实验报告将介绍我在学习Java编程基础过程中所进行的实验,并总结实验结果和心得体会。
二、实验目的本次实验的主要目的是通过编写Java程序,加深对Java编程语言的理解和掌握,提高编程能力和解决问题的能力。
三、实验内容1. 实验环境搭建在开始实验之前,我首先搭建了Java编程环境。
我选择了使用Eclipse作为集成开发环境(IDE),并安装了Java开发工具包(JDK)。
2. 实验一:Hello World程序在第一个实验中,我编写了一个简单的Hello World程序。
该程序的功能是在控制台输出"Hello, World!"。
通过这个实验,我熟悉了Java程序的基本结构和语法规则。
3. 实验二:变量和数据类型在第二个实验中,我学习了Java中的变量和数据类型。
我编写了一个程序,实现了两个整数相加并输出结果的功能。
通过这个实验,我掌握了Java中的基本数据类型和变量的声明和使用方法。
4. 实验三:条件语句和循环语句在第三个实验中,我学习了Java中的条件语句和循环语句。
我编写了一个程序,实现了判断一个数是否为偶数并输出结果的功能。
通过这个实验,我掌握了Java中的if语句和for循环语句的使用方法。
5. 实验四:数组和字符串在第四个实验中,我学习了Java中的数组和字符串。
我编写了一个程序,实现了对一个整型数组进行排序并输出结果的功能。
通过这个实验,我掌握了Java中数组的声明和使用方法,以及字符串的操作方法。
6. 实验五:面向对象编程在第五个实验中,我学习了Java中的面向对象编程。
我编写了一个程序,实现了一个简单的学生信息管理系统。
通过这个实验,我掌握了Java中类的定义和对象的创建与使用方法。
四、实验结果通过以上实验,我成功编写了各种Java程序,并在控制台输出了预期的结果。
JAVA第四,五,六次PTA作业总结⼀、前⾔第⼆阶段的JAVA⼤作业与第⼀阶段的作业相⽐,其难度⼤⼤提⾼,知识点也更加贴合⾯向对象的使⽤。
在本阶段,将会更加深⼊学习⾯向对象的思想,⽤更加合理的⽅式完成相应的功能。
此阶段也是极具挑战性的⼀个阶段,相⽐于上⼀阶段这⼀阶段实属有些磕磕绊绊,但是也同时学到不少新的东西,对⾯向对象也有了更深刻的了解。
⼆、作业概况第四次作业第四次作业的题⽬分别是:7-1 ⽔⽂数据校验及处理7-2 ⽇期问题⾯向对象设计(聚合⼀)7-3 图形继承运⽤知识点:正则表达式的运⽤正则表达式对输⼊数据进⾏合法性校验Java中类的聚合关系的使⽤⽅法类的继承与封装构造⽗类和⼦类,并使⽤this及super等关键字题⽬难度:第五次作业总共分为三道题题,第⼀题是⽔⽂数据校验及处理,对于这道题也是这次作业中最难的题,开始看这道题的时候内⼼复杂,因为这道题的题⽬⼜是⼀个⽂件,这⽂件中写的全是这道题的要求还有过程。
这是我学Java以来接触的最长的题⽬。
看了很久才知道⼤概过程,然后花了很久的时间才渐渐写出了⼤概过程,但是当时我还是不怎么会正则表达式,⽽且题⽬过程太复杂中间⼀些没考虑好的地⽅也很多,所以最后,还是没做出来;后⾯两题分别是类的聚合和图形继承也就⽗类⼦类的运⽤,除了聚合相对多花点时间调试做出来还是⼗分顺利的。
第五次作业第五次作业的题⽬分别是:7-5 ⽇期问题⾯向对象设计(聚合⼆)7-4 统计Java程序中关键词的出现次数7-2 合并两个有序数组为新的有序数组7-3 对整型数据排序运⽤知识点:类的聚合的运⽤但是使Year、Month、Day与DateUtil的聚合关系发⽣变化。
⽤数组存储⽉份天数。
使⽤Set和List或Map等接⼝正则表达式判断数据简单的数组排序输出题⽬难度:第⼀题和上⼀次作业类的聚合类似但是Year、Month、Day与DateUtil的聚合关系发⽣变化,之前的求前n天和后n天的函数进⾏了修改,个⼈感觉有点繁琐;第⼆题难度较⾼⽽且还运⽤了正则表达式以及map等接⼝的运⽤,⼗分复杂,处理学习和同学讨论了许久才解决;后⾯两题为简单的数组排序题,很好解决。
实验报告【实验名称】第五章异常类字符串文件读取【实验目的】1.学习内部类和异常类2.学习字符串处理和文件读写【实验原理】1.Java程序设计基本原理2.面向对象程序设计基本原理【实验内容】实验一:按要求修改一个播放器程序import java.applet.Applet;import java.applet.AudioClip;import java.io.File;import .MalformedURLException;import .URL;import java.util.Scanner;class audioplay{AudioClip adc;// 声音音频剪辑对象URL url; //wav文件路径void SetPlayAudioPath(String path){//选择播放文件try{url = new URL("file:"+path);adc = Applet.newAudioClip(url);}catch (MalformedURLException e1) {e1.printStackTrace();}}void play(){ //播放wav文件adc.play();System.out.println("播放中...");}void stop(){ //停止播放wav文件adc.stop();System.out.println("停止播放");}}public class filemusic{public static void main(String[] args) {audioplay audioPlay=new audioplay();String str=".\\"+"2.wav";audioPlay.SetPlayAudioPath(str);audioPlay.play();}}要求如下:(1)程序默认是读取固定文件2.wav,请修改为键盘输入文件名。
实验一:编写一个Java Application程序,打印命令行输入的所有参数。
实验源代码:package .bing;import java.util.Scanner;public class Scanner_01 {public static void main(String[] args) { String name;String Sage;int age;String Ssore;double sore;Scanner in = new Scanner(System.in);System.out.println("请输入你的姓名:");name = in.nextLine();System.out.println("请输入您的年龄:");Sage = in.nextLine();age = Integer.parseInt(Sage);System.out.println("请输入您的分数");Ssore =in.nextLine();sore = Double.parseDouble(Ssore);System.out.println(name+" "+age+" "+sore);}}运行结果:实验题2 阅读下面程序,叙述其功能程序功能:从指定的文件中读出数据。
实验题 3 设计一个类FileRWTest,实现从input.txt文件中读入数据到字符数组cBuffer中,然后再写入到文件“output.txt”中。
[基本要求] 编写完整程序。
程序源代码:package .bing;import java.io.*;public class FileRWTest {public static void main(String[] args) throws FileNotFoundException{int rs;File file = new File("D:\\","input.txt");File fileout = new File("D:\\","Output.txt");FileInputStream fis = new FileInputStream(file);FileOutputStream fos = newFileOutputStream(fileout,true);InputStreamReader isr = new InputStreamReader(fis);OutputStreamWriter out = new OutputStreamWriter(fos);try {while((rs = isr.read())!=-1){char cBuffer=(char)rs;out.write((int)cBuffer);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {isr.close();out.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}实验题 4"水仙花数"。
所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。
例如,153就是一水仙花数,因为153 = 13+53+33。
请计算出100万以内所有的水仙花数,并以一行一个水仙花数的格式保存到文本文件data.txt中。
输出格式如下:153 = 1*1*1 + 5*5*5 + 3*3*3程序源代码:package .bing;import java.io.*;public class Daffodil {public static void Check(){Integer num;for(num=100;num<1000;num++){String str = new String(num.toString());char []s = new char[str.length()];s = str.toCharArray();int sum=0;for(int i=0;i<str.length();i++){int m = (s[i]-'0');int n = m*m*m;sum+=n;}if(num == sum ){StringBuffer aline = new StringBuffer();aline.append(num+" = ");for(int i=0;i<3;i++){if(i!=2)aline.append(s[i]+"*"+s[i]+"*"+s[i]+"*"+" + ");elsealine.append(s[i]+"*"+s[i]+"*"+s[i]);}String al = new String(aline);File file = new File("F:\\shuixianhua.txt");FileWriter fos;try {fos = new FileWriter(file);BufferedWriter bw = new BufferedWriter(fos);bw.write(al+"\n");bw.newLine();bw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(al);}}}public static void main(String[] args) {// TODO Auto-generated method stubCheck();}}运行结果:实验题 5写一程序统计纯文本文件“Early-Precaution.txt”的大写字母、小写字母个数,并将所有小写字母转换为大写字母,输出到result.txt程序源代码:package .bing;import java.io.*;public class Getchar {FileReader fr;public static void main(String[] args) {FileReader fr;try {fr = new FileReader("F:\\Early-Precaution.txt");File file = new File("F:\\result.txt");FileWriter fos =new FileWriter(file);BufferedReader br = new BufferedReader(fr);BufferedWriter bw = new BufferedWriter(fos);String aline;int k=0;int m=0;while((aline = br.readLine())!=null){String str = new String (aline);char []s = new char[str.length()];s=str.toCharArray();for(int i=0;i<str.length();i++){if(s[i]>='a'&& s[i]<='z'){k++;}else if(s[i]>='A' && s[i]<='Z'){m++;}}String STR = str.toUpperCase();bw.write(STR + "\n");}br.close();bw.close();System.out.println("小写字母的个数为:");System.out.println(k);System.out.println("大写字母的个数为:");System.out.println(m);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}程序运行结果:实验总结:1、对String类有了进一步的认识。
2、了解并掌握了基本的输入输出流的实现方法。
3、字符流和字节流有了更为深刻的认识。