西电计算机Java上机实验报告.docx_第1页
西电计算机Java上机实验报告.docx_第2页
西电计算机Java上机实验报告.docx_第3页
西电计算机Java上机实验报告.docx_第4页
西电计算机Java上机实验报告.docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安电子科技大学Java课程上机练习题 (2016年度)上机报告 班 级: 姓 名: 学 号: 一、 Java语言基础1、实验目标:掌握Java语法;掌握Java程序结构;掌握Java编译、调试、运行的方法。2、实验要求:编写一个程序,程序提供两种功能:(1)用户输入一个整数,程序计算并输出从1开始到该整数的所有整数之和;同时,计算并输出不大于该整数的所有素数的数目。(2)用户输入一个数字串,程序判断该数字串各位上数字的奇偶性,并分别输出奇、偶数位的计数值及各位的加和值。3、题目分析:判断整数是素数要构建一个测试类,然后统计是素数的个数;数字串需要判断每位的数字的奇偶性,则要将数字串转化为数组的形式,然后进行奇偶判断,进行统计。4、题目设计实现:分别设计判断素数、整数求和、格式转变、判断奇偶性、各位求和的函数。5、实现过程:/判断一个数是否是素数public static boolean isPrime(int a)boolean flag = true;if(a2)return false;elsefor(int i = 2;i=Math.sqrt(a);i+)if(a%i = 0)flag = false;return flag;/在main函数计算求和及判断public static void main(String args)int sum=0,j=0;Scanner sc = new Scanner(System.in);System.out.println(请输入一个数计算他的和);int num = sc.nextInt();for(int i=1;i=num;i+)sum = sum + i;if(isPrime(i)j+;System.out.println(这个数的和为+sum+n素数有+j+个);/输入一个字符串并转化为数字存放到数组中public static void main(String args)System.out.println(请输入一串数字串);Scanner scan = new Scanner(System.in);String line = scan.next();int odd=0,even=0,sumo=0,sume=0;char c = line.toCharArray();/求和for(int i = 0; iline.length(); i+)if(int)ci%2 = 0)even+;sume = sume +(int)ci-48;elsesumo = sumo +(int)ci-48;odd+;System.out.println(奇数共有+odd+个n+奇数和为+sumo);System.out.println(偶数共有+even+个n+偶数和为+sume);6、实验结果:7、个人总结:通过这次基础练习,对Java的各种规范和函数调用有了一定的熟悉,因为之前的编过类似的,所以用Java上手没有很陌生,算是一个很好的入门基础。8、源代码:1. 整数import java.util.Scanner;public class test public static void main(String args)int sum=0,j=0;Scanner sc = new Scanner(System.in);System.out.println(请输入一个数计算他的和);int num = sc.nextInt();/System.out.println(hello world!);for(int i=1;i=num;i+)sum = sum + i;if(isPrime(i)j+;System.out.println(这个数的和为+sum+n素数有+j+个);sc.close();public static boolean isPrime(int a)boolean flag = true;if(a2)return false;elsefor(int i = 2;i=Math.sqrt(a);i+)if(a%i = 0)flag = false;return flag;2.数字串import java.util.Scanner;public class test public static void main(String args)System.out.println(请输入一串数字串);Scanner scan = new Scanner(System.in);String line = scan.next();int odd=0,even=0,sumo=0,sume=0;char c = line.toCharArray();/System.out.println(int)c0);for(int i = 0; iline.length(); i+)if(int)ci%2 = 0)even+;sume = sume +(int)ci-48;elsesumo = sumo +(int)ci-48;odd+;System.out.println(奇数共有+odd+个n+奇数和为+sumo);System.out.println(偶数共有+even+个n+偶数和为+sume);scan.close();二、Java的面向对象特性1、实验目标:掌握面向对象的编程方法;掌握Java的面向对象特性;掌握采用面向对象技术构建系统的一般方法。2、实验要求:编写一个程序,程序提供对图形的绘制功能(模拟绘制,采用文本输出的形式表现绘制内容):1 构建所有图形的父类:Shape,该类中定义图形的基本属性及方法。2 构建基本图形类:矩形(Rectangle)、圆(Circle)、正三角形(Triangle)。3 可通过多态实现对任意图形的绘制。/上塑型4 定义静态方法,该方法可以对传入的对象实例进行判断,并输出该对象实例的类型。/输入输出5 定义静态方法,该方法可以输出传入的对象实例的中心点坐标。6 构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用户的操作请求。/用户输入画的图形3、题目分析:首先需要构建一个关于图形的类,然后要构建三个特殊的子类,使用继承的思想,实现对图形得绘制和实现4、题目设计实现:设计父类,和子类,然后能对输出的类进行判断和选择,并且定义它的中心坐标5、实现过程:/定义父类及它的方法public class Shapeint length=0;int wide=0;int line=0;int list=0;public Shape()public Shape(int line,int list)this.line = line;this.list = list;public void draw()System.out.println(draw);/定义三个子类/矩形class Rectangle extends Shapepublic Rectangle()super(3,3);public void draw()System.out.println(draw a rectangle);/圆class Circle extends Shapepublic Circle()super(4,2);public void draw()System.out.println(draw a Circle);/三角class Triangle extends Shapepublic Triangle()super(1,3);public void draw()System.out.println(draw a Triangle);/输出类的定义class printDatastatic void printClass(Object obj)System.out.println(the class of the Shape is:+obj.getClass();/输出类名static void printrank(Shape str)System.out.println(the coordinate of the centre is:x:+str.line+ y:+str.list);/输出中心点坐标/main函数中进行交互和判断public static void main(String args)int num=-1;Scanner sr = new Scanner(System.in);/交互选择while(num!=3)System.out.println(please input the number of the shape you want);System.out.println(0:Rectangle 1:Circle 2:Triangle 3:exit);num = sr.nextInt(); Shape s = new Shape();switch(num)case 0:s = new Rectangle();/向上转型s.draw();printData.printClass(s);printData.printrank(s);break;case 1:s = new Circle();s.draw();printData.printClass(s);printData.printrank(s);break;case 2:s = new Triangle();s.draw();printData.printClass(s);printData.printrank(s);break;case 3:break;default:System.out.println(its wrong!);break;System.out.println(you have exit);sr.close(); 6、实验结果:7、个人总结:通过这次作业,学会了Java继承的基础用法,并在定义中使用静态方法和重构等一些用法来实现转型,可能是用的不熟,过程中出现了大量的错误,经过几次修改终于做了出来,收获很大。8、源代码:import java.util.Scanner;public class Shapeint length=0;int wide=0;int line=0;int list=0;public Shape()public Shape(int line,int list)this.line = line;this.list = list;public void draw()System.out.println(draw);class Rectangle extends Shapepublic Rectangle()super(3,3);public void draw()System.out.println(draw a rectangle);class Circle extends Shapepublic Circle()super(4,2);public void draw()System.out.println(draw a Circle);class Triangle extends Shapepublic Triangle()super(1,3);public void draw()System.out.println(draw a Triangle);class printDatastatic void printClass(Object obj)System.out.println(the class of the Shape is:+obj.getClass();static void printrank(Shape str)System.out.println(the coordinate of the centre is:x:+str.line+ y:+str.list);class TestShapepublic static void main(String args)int num=-1;Scanner sr = new Scanner(System.in);while(num!=3)System.out.println(please input the number of the shape you want);System.out.println(0:Rectangle 1:Circle 2:Triangle 3:exit);num = sr.nextInt(); Shape s = new Shape();switch(num)case 0:s = new Rectangle();/向上转型s.draw();printData.printClass(s);printData.printrank(s);break;case 1:s = new Circle();s.draw();printData.printClass(s);printData.printrank(s);break;case 2:s = new Triangle();s.draw();printData.printClass(s);printData.printrank(s);break;case 3:break;default:System.out.println(its wrong!);break;System.out.println(you have exit);sr.close(); 三、Java的高级语言特征1、实验目标:熟悉Java的泛型;了解Java的泛型特点;初步掌握Java的泛型编程方法。2、实验要求:编写一个程序,程序提供记事本功能:1 构建记事本类,该类能存储不定数量的记录;能获得已经存储的记录数量;能追加记录;能展示已经存储的全部记录或其中任何一条记录;能删除已经存储的全部记录或其中任何一条记录。2 构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用户的操作请求。3、题目分析:构建一个记事本类,要存储不定量的记录,需要用链表数组存放,利用链表数组的功能可以查询、添加、显示、删除记录。进行与用户交互,建立测试类。4、题目设计实现:记事本类,用泛型ArrayList,建立测试类isTest(),进行与用户交互,再构建一个显示类showText()和删除类deleteText()。5、实现过程:static ArrayList diaryText = new ArrayList();/引用泛型/建立显示类,显示选择的记录public static void showText(ArrayList list,int n)if(list.isEmpty()System.out.println(尚无记录n);elseif(n=0)for(int j=0; j 0&n=list.size()System.out.println(n+:+diaryText.get(n-1);elseSystem.out.println(输入错误,请重新输入n);/建立删除类,删除选择的记录public static void deleteText(ArrayList list,int n)if(list.isEmpty()System.out.println(尚无记录n);elseif(n=0)list.clear();System.out.println(已清除全部记录n);else if(n0&n=list.size()list.remove(n-1);System.out.println(已删除第+n+条数据n);elseSystem.out.println(输入错误,请重新输入n);/建立测试类,与用户进行交互public static void isTest()int num=0,i=0;String str;Scanner input = new Scanner(System.in);System.out.println(记事本功能);System.out.println(请输入想要执行的功能);while(true)System.out.println(1记事);System.out.println(2已记录数);System.out.println(3追加记录);System.out.println(4显示已存储记录(0为全部记录));System.out.println(5删除记录(0为全部记录));System.out.println(6退出);num = input.nextInt();if(num=6)System.out.println(您已退出程序n);input.close();System.exit(0);else switch(num)case 1:System.out.println(请输入内容);input.nextLine();str = input.nextLine();diaryText.add(str);System.out.println(已保存n);break;case 2:System.out.println(已记录数为:+diaryText.size()+n);break;case 3:System.out.println(请输入修改的记录号);i = input.nextInt();System.out.println(请输入修改内容);input.nextLine();str =input.nextLine();diaryText.set(i-1, str);System.out.println(已修改n);break;case 4:System.out.println(请输入要显示第几条的内容);i = input.nextInt();showText(diaryText,i);break;case 5:System.out.println(请输入要删除第几条的内容);i = input.nextInt();deleteText(diaryText,i);break;default:System.out.println(输入错误,请重新输入!n);break;6、实验结果:1记事2已记录数3追加记录4显示已存储记录5删除记录6退出(0为全部记录)(0为全部记录)7、个人总结:这次试验学到关于泛型的知识,并学会调用泛型中用到的一些方法,比如添加,显示,删除这些方法,对泛型的运用有了基础的认识。8、源代码:import java.util.*;public class diarytext static ArrayList diaryText = new ArrayList();public static void showText(ArrayList list,int n)if(list.isEmpty()System.out.println(尚无记录n);elseif(n=0)for(int j=0; j 0&n=list.size()System.out.println(n+:+diaryText.get(n-1);elseSystem.out.println(输入错误,请重新输入n);public static void deleteText(ArrayList list,int n)if(list.isEmpty()System.out.println(尚无记录n);elseif(n=0)list.clear();System.out.println(已清除全部记录n);else if(n0&n=list.size()list.remove(n-1);System.out.println(已删除第+n+条数据n);elseSystem.out.println(输入错误,请重新输入n);public static void isTest()int num=0,i=0;String str;Scanner input = new Scanner(System.in);System.out.println(记事本功能);System.out.println(请输入想要执行的功能);while(true)System.out.println(1记事);System.out.println(2已记录数);System.out.println(3追加记录);System.out.println(4显示已存储记录(0为全部记录));System.out.println(5删除记录(0为全部记录));System.out.println(6退出);num = input.nextInt();if(num=6)System.out.println(您已退出程序n);input.close();System.exit(0);else switch(num)case 1:System.out.println(请输入内容);input.nextLine();str = input.nextLine();diaryText.add(str);System.out.println(已保存n);break;case 2:System.out.println(已记录数为:+diaryText.size()+n);break;case 3:System.out.println(请输入修改的记录号);i = input.nextInt();System.out.println(请输入修改内容);input.nextLine();str =input.nextLine();diaryText.set(i-1, str);System.out.println(已修改n);break;case 4:System.out.println(请输入要显示第几条的内容);i = input.nextInt();showText(diaryText,i);break;case 5:System.out.println(请输入要删除第几条的内容);i = input.nextInt();deleteText(diaryText,i);break;default:System.out.println(输入错误,请重新输入!n);break;public static void main(String args)isTest();四、Java的输入输出1、实验目标:掌握Java输入输出类;掌握Java输入输出特点;掌握Java输入输出编程方法。2、实验要求:编写一个程序,程序实现对用户指定的文本文件中的英文字符和字符串的个数进行统计的功能,并将结果根据用户选择输出至结果文件或屏幕。1 构建统计类,该类实现对I/O的操纵;实现对文本文件中英文字符、字符串的统计;实现对统计结果的输出。2 构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用户的操作请求。3、题目分析:对指定文件进行输入后的操作要用输入输出流来进行,将文件中的内容通过字符串的形式保存,通过文件类对文件进行各种操作。4、题目设计实现:用一个类实现对所有字母的查找,一个类实现对字符串的定位查找并统计,一个类进行统计字母,测试类与用户交互。5、实现过程:/*计数字符*/static int lookword(File file) throws ExceptionScanner input = new Scanner(file);int count1 = 0;while(input.hasNext()String s = input.next();char a = s.toCharArray();for(int i=0; i= a & word = A & word =Z)return true;return false;/交互测试类public static void isTest() throws ExceptionScanner in = new Scanner(System.in);System.out.println(请输入要统计的文件名:); String f = in.next();File file = new File(src/statistics/+f);if(!file.exists()System.out.println(没有找到文件);System.exit(0);System.out.println(文件的长度是: + file.length();System.out.println(这个文件有 + statistics.lookword(file) + 个字符);System.out.println(这个文件有 + statistics.lookstring(file) + 个字符串);in.close();6、实验结果:文本test.txt内容结果:7、个人总结:通过这次实验,学会了对文件的输入输出的io方式进行了学习,并加入了抛出异常的方式,对文本操作的方式字符和字符串也有不同。8、源代码:import java.util.Scanner;import java.io.File;public class statistics /*计数字符*/static int lookword(File file) throws ExceptionScanner input = new Scanner(file);int count1 = 0;while(input.hasNext()String s = input.next();char a = s.toCharArray();for(int i=0; i= a & word = A & word =Z)return true;return false;public static void isTest() throws ExceptionScanner in = new Scanner(System.in);System.out.println(请输入要统计的文件名:); String f = in.next();/String loc =test.txt; /System.out.println(f);File file = new File(src/statistics/+f);/System.out.println(file.getAbsolutePath();if(!file.exists()System.out.println(没有找到文件);System.exit(0);System.out.println(文件的长度是: + file.length();System.out.println(这个文件有 + statistics.lookword(file) + 个字符);System.out.println(这个文件有 + statistics.lookstring(file) + 个字符串);in.close();public static void main(String arg) throws ExceptionisTest();五、Java的多线程编程1、实验目标:掌握Java输入输出类;掌握Java输入输出特点;掌握Java输入输出编程方法。2、实验要求:编写一个程序,程序模拟某电影院三个售票窗口同时出售电影票的过程。1 电影票顺序出售,程序模拟显示售票的详细过程(如:“窗口X出售编号XXX电影票”)。2 三个窗口同时出票,出票间隔采用随机控制。3 不能重复出售相同的电影票。3、题目分析:采用多线程,对同一事件进行并行操作,三个窗口售票的是同一个电影,所以三个出现的时间是不确定的,所以要对并发过程进行控制。4、题目设计实现:多线程使用需要定义静态的值,才可以使用多线程,把票数定义为静态,然后开启三个线程同时售票,售票窗口随机售票。5、实现过程:/*卖票类继承接口Runnable,实现资源的共享*/class SellTicket implements RunnableString name;ArrayList movie;public SellTicket(String name, ArrayList movie) = name;this.movie = movie;public void run()while(saleticket.sell(movie)saleticket.sell(name, movie); try Thread.sleep(long)(Math.random()*1000); catch(Exception e) e.printStackTrace(); String film; static int ticket = 20; static int num = 0; public saleticket(String film,int ticket) this.film = film; saleticket.ticket = ticket; /*判断剩余票数*/ static boolean sell(ArrayList movie) for(int i = 0; i movie.size(); i+) movie.get(i);if(saleticket.ticket != 0) return true; return false; public static void main(String arg) ArrayList movie = new ArrayList(); saleticket m1 = new saleticket(神奇动物世界,ticket); saleticket m2 = new saleticket(神奇动物世界,ticket); saleticket m3 = new saleticket(神奇动物世界,ticket); movie.add(m1); movie.add(m2); movie.add(m3); Runnable t1 = new SellTicket(1号, movie); Runnable t2 = new SellTicket(2号, movie); Runnable t3 = new SellTicket(3号, movie); Thread t_1 = new Thread(t1); Thread t_2 = new Thread(t2); Thread t_3 = new Thread(t3); /启动线程,调用run方法 t_1.start(); t_2.start(); t_3.start(); /*共享数据用synchronized锁方式访问,可以具有互斥的作用*/static synchronized void sell(String name ,Array

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论