收藏 分销(赏)

JAVA上机题目.doc

上传人:s4****5z 文档编号:8798722 上传时间:2025-03-02 格式:DOC 页数:25 大小:219KB 下载积分:10 金币
下载 相关 举报
JAVA上机题目.doc_第1页
第1页 / 共25页
JAVA上机题目.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
一、 运行书中Helloworld程序 二、 编写一个计算器类,要求实现加、减、乘、除运算,注意在进行除法运算时,如果除数为0,那么就直接输出Error来 下面代码为判断是否为数字,如果是数字,那么返回是true,否则返回false,在使用下面代码前,要在程序头导入包:import java.util.regex.*; public static boolean isNumeric(String str) { Pattern pattern = Ppile("[0-9]*"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ) { return false; } return true; } 三、 编写Java程序,要求在运行的时候输入一个数字,表示行数,程序计算出相应行数的杨辉三角数据,并在屏幕上显示出来。 (1)、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。 (2)、第n行的数字个数为n个。 (3)、第n行数字和为2n − 1。 (4)、每个数字等于上一行的左右两个数字之和。 (5)、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+2行第5个数……连成一线,这些数的和是第2n个斐波那契数。将第2n行第2个数,跟第2n+1行第4个数、第2n+2行第6个数……这些数之和是第2n-1个斐波那契数。 (6)、第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×n×(n-1)/2,第四个数为1×n×(n-1)/2×(n-2)/3…依此类推。 通过main方法中的args获取用户附带的参数,例如用户输入app 10 (注意参数间有空格),那么args对应的值为:args[0]=10,然后通过Integer.parseInt(args[0]),即可得到int类型的数据。 四、 编写Java程序,Java中程序的结构,类的声明和定义 掌握面向对象的基本思想,抽象对象并定义类,类的继承结构,理解并能熟练运用类的多态性,抽象类和接口及它们的区别,理解并熟练运用抽象类和接口解决耦合问题。 1、构造一个抽象类Shape,它有两个抽象的方法area()和perimeter(),分别表示求面积和周长,此外,它还有一个具体方法message(),能输出类的一些信息。 public abstract class Shape { //创建抽象类 public abstract void area(); //创建抽象方法 public abstract void perimeter(); //创建抽象方法 public void message(){ //创建具体方法 System.out.print("OY"); } } 2、定义一个接口Graph,它有一个抽象的方法draw(),表示绘制Shape。 public interface Graph { //创建接口 public abstract void draw(); //创建抽象方法 } 3、构造Shape的两个子类Circle和Rectangle,分别表示圆和矩形,并且实现接口Graph。 //创建Circle类,继承Shape类,并实现接口Graph public class Circle extends Shape implements Graph { // 重写抽象类的抽象方法 public void area() { } // 重写抽象类的抽象方法 public void perimeter() { } // 重写接口的抽象方法 public void draw(){ }; } //创建Rectangle类,继承Shape类,并实现接口Graph public class Rectangle extends Shape implements Graph{ // 重写抽象类的抽象方法 public void area() { // TODO Auto-generated method stub } // 重写抽象类的抽象方法 public void perimeter() { // TODO Auto-generated method stub } // 重写接口的抽象方法 public void draw(){ }; } 4、构造测试类Test,其有方法getShapeData(Shape s),它输出s的面积和周长,构造矩形实例和圆实例,体会area方法和perimeter方法的多态性。 public class Test { //创建Test类 public static void getShapeData(Shape s){ //创建 方法 s.area(); s.perimeter(); } public static void main(String[] args) { getShapeData(new Circle()); //抽象类的多态 getShapeData(new Rectangle()); //抽象类的多态 } } 5、类似上题,为Test添加方法drawGraph(Graph g),它“画出”Graph的图形----调用draw方法,构造矩形实例和圆实例,体会draw方法的多态性。 public class Test { //创建Test类 public void drawGraph(Graph g){ //创建 方法 g.draw(); } public static void main(String[] args) { Test t=new Test(); t.drawGraph(new Circle()); //接口的多态 t.drawGraph(new Rectangle()); //接口的多态 } } 总结: 1、根据自己对实验的理解,说明一下在本实验中,抽象类Shape的作用是什么? 产生子类的同时给于子类一些特定的属性和方法 2、 分析说明抽象类和接口的异同? 抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可以被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可以实现多个接口。 1. 类是对对象的抽象;抽象是对类的抽象;接口是对行为的抽象。 2. 如果行为跨越不同的对象,可使用 ;对于一些相似的类对象,用继承抽象类。 3. 抽象类是从子类发现公共的东西,泛化出父类,然后子类继承父类;而接口是根本不知子类的存在,方法如何实现还不确定,预先定义。 五、 熟悉Java中程序的结构,接口的定义和使用 学校中有教师和学生两类人,而在职研究生既是教师又是学生。设计两个接口studentinterface和teacherinterface。其中,studentinterface接口包含setFee()getFee()方法,分别用于设置和获取学生的学费;teacherinterface接口包含setPay()和getPay()方法,分别用于设置和获取教师的工资。 定义一个研究生类graduate,实现studentinterface接口和teacherinterface接口,它的成员变量有name,sex,age,fee,pay。 创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“provide a loan”(需要贷款)信息。 要求:在graduate中实现各个接口定义的抽象方法。 实验代码: 定义接口IStudentinterface public interface IStudentinterface //创建学生接口 { public void setFee(float fee); //抽象(设置学生的学费)方法 public float getFee(); //抽象(获取学生的学费)方法 } 定义接口ITeacherinterface public interface ITeacherinterface //创建教师接口 { public void setPay(float pay); //抽象(设置教师工资)方法 public float getPay(); //抽象(获取教师工资)方法 } 定义研究生类Graduate public class Graduate implements IStudentinterface, ITeacherinterface { String name,sex; int age; float fee,pay; public Graduate(String name,String sex,int age) //定义构造函数设置姓名,性别及年龄 { this.name = name; this.sex = sex; this.age = age; } @Override public float getFee() { //实现返回学费数据的方法 // TODO Auto-generated method stub return fee; } @Override public void setFee(float fee) { //实现设置学费数据的方法 // TODO Auto-generated method stub this.fee = fee ; } @Override public float getPay() { //实现返回工资数据的方法 // TODO Auto-generated method stub return pay; } @Override public void setPay(float pay) { //实现设置工资数据的方法 // TODO Auto-generated method stub this.pay = pay; } } 定义测试类Test实例化方法 public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Graduate zs = new Graduate("zhangsan","男",26); zs.setFee(1500); //设置学生学费 zs.setPay(2000); //设置教师工资 float zsf = zs.getFee(); float zsp = zs.getPay(); float zst = zsp - zsf; if(zst<2000){ System.out.print("provide a loan"); } } } 六、 掌握Java高效类的特征,Java中如何设计高效的低耦合高聚合类,掌握接口在类的耦合性中的作用 1、设计一个学生信息管理系统,要求能对学生的信息进行增删改查的操作,在设计中要求能充分合理使用低耦合和高聚合的特征。注意,在对数据库的操作语句不需要完成,只需要进行相应的提示即可。 实验代码如下: //创建学生基类 Students public class Students { private String Name; private String Sex; private int Age; public Students (String strName, String strSex, int iAge) //设置学生信息的构造方法 { this. Name = StrName; this. Sex = StrSex; this. Age = IAge; } public String GetStudnetName(String strName) { this. Name = StrName; } public String GetStudnetName() { return Name; } public String GetStudentSex() { return Sex; } public int GetStudentAge() { return Age; } } //创建Manager类针对实现学生信息操作的具体方法实现 public class Manager { public Student AddStudent(String strName, String strSex, int iAge) { Student S1 = new Student (strName, strSex, iAge); String strSql = "添加学生信息" +" 姓名: " + S1.GetStudnetName() +" 性别: " + S1.GetStudentSex() +" 年龄: " + S1.GetStudentAge(); System.out.println(str_Sql); return S1; }//提供添加学生信息的方法 public void DeleteStudent(Student s1) { String strSql = "删除学生信息" + " 姓名: " + S1.GetStudnetName(); System.out.println(strSql); }//提供删除学生信息的方法 public void DeleteStudent(String strName) { String strSql = "修改学生信息" + " 姓名: " + S1.GetStudnetName(); System.out.println(strSql); }//提供修改学生信息的方法 public void SelectStudnet(Student S1) { String strSql = "查找结果:\n " + "姓名: " + S1.GetStudnetName() + "性别: " + S1.GetStudentSex() + "年龄: " + S1.GetStudentAge(); System.out.println(strSql); }//提供查找学生信息的方法 } 书写测试类完成实际操作: public class Test { public static void main(String[] args) { Manager M1 = new Manager (); Student S1 = Manager.AddStudent("张三","男",22); M1.UpdateStudent (S1,”李四”); M1.SelectStudnet (S1); M1.DeleteStudent (S1); } } 七、 掌握Java高效类的特征,Java中成员函数的设计,Java中常用的从Object中继承的方法的作用,成员函数的重写 设计一个软件,实现以下功能: 1、 设计一个成绩类,具有课程编号、课程名称、分数 2、 设计一个学生信息类,具有学号、姓名、性别、成绩 3、 要求学生信息类能完成对象的克隆(Clone)、比较(Equals)、学号输出(HashCode)、信息输出(ToString)等相关功能。 4、 克隆的时候,要求对新对象中成绩的修改不影响到旧对象的成绩 5、 比较的时候,只需要对对象中的学号进行比较,如果学号相等,那么就返回为真,否则为假 6、 当运行对象的HashCode方法时,输出此对象的学号 7、 当执行对象的toString方法时,要求按照下面的格式输出数据 0001 张三 男 80 87 90 81 成绩类: package com.stu.info; public class Score { public Score(String courseID, String courseName, int courseScore) { super(); this.courseID = courseID; this.courseName = courseName; this.courseScore = courseScore; } private String courseID; public String getCourseID() { return courseID; } public void setCourseID(String courseID) { this.courseID = courseID; } private String courseName; public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } private int courseScore; public int getCourseScore() { return courseScore; } public void setCourseScore(int courseScore) { this.courseScore = courseScore; } } 学生信息类: package com.stu.info; public class Student implements Cloneable{ public Student(String stuNo, String stuName, String stuSex, Score[] stuScore) { super(); this.stuNo = stuNo; this.stuName = stuName; this.stuSex = stuSex; this.stuScore = stuScore; } private String stuNo; public String getStuNo() { return stuNo; } public void setStuNo(String stuNo) { this.stuNo = stuNo; } private String stuName; public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } private String stuSex; public String getStuSex() { return stuSex; } public void setStuSex(String stuSex) { this.stuSex = stuSex; } private Score[] stuScore; public Score[] getStuScore() { return stuScore; } public void setStuScore(Score[] stuScore) { this.stuScore = stuScore; } public int hashCode() { return Integer.parseInt(this.stuNo); } public boolean equals(Object obj) { if(this.stuNo== (String) obj ) { return true; } return false; } @Override public String toString() { String strTemp = this.stuNo+"\t"+this.stuName+"\t"+this.stuSex+"\t"; for(int i=0;i<stuScore.length;i++) { strTemp+=this.stuScore[i].getCourseScore()+"\t"; } return strTemp; } protected Object clone() throws CloneNotSupportedException { Student stu=(Student)(super.clone()); stu.stuScore=this.stuScore; return stu; } } 测试类: package com.stu.info; public class Test { /** * @param args */ public static void main(String[] args) throws CloneNotSupportedException { // TODO Auto-generated method stub Score sc=new Score("EN001","英语1",80); Score sc1=new Score("EN001","英语1",87); Score sc2=new Score("EN001","英语1",90); Score sc3=new Score("EN001","英语1",81); Score[] score=new Score[4]; score[0]=sc; score[1]=sc1; score[2]=sc2; score[3]=sc3; Student stu=new Student("10001","张三","男",score); stu.setStuScore(score); System.out.println("该对象的学号是:"+stu.hashCode()); if(stu.equals("10001")) { System.out.println("10001 与 对象学号:"+stu.getStuNo()+" 相同啦"); } else { System.out.println("10001 与 对象学号: "+stu.getStuNo()+" 不同啦"); } Student stu1=(Student)stu.clone(); System.out.println("克隆对象后的学号是:"+stu1.hashCode()); Score sco=new Score("EN001","英语1",90); Score sco1=new Score("EN001","英语1",97); Score sco2=new Score("EN001","英语1",100); Score sco3=new Score("EN001","英语1",91); Score[] score1=new Score[4]; score1[0]=sco; score1[1]=sco1; score1[2]=sco2; score1[3]=sco3; stu1.setStuScore(score1); System.out.println(stu.toString()); System.out.println(stu1.toString()); System.out.println(stu.toString()); } } 程序结果: 八、 掌握Java如何实现多线程程序的设计,Java中实现多线程的方法 参考书本多线程的代码,设计具有以下功能的程序 l 总共有1000张火车票 l 有四个售票点来销售(用四个线程来模拟实现) l 当线程销售出去一张票时,显示线程销售的提示信息 (一)public class DuoThreah implements Runnable { @Override public void run() { // TODO Auto-generated method stub int nonSharedValue = 100; nonSharedValue += 100; System.out.println("Value:"+ nonSharedValue); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DuoThreah ts = new DuoThreah(); Thread t1 = new Thread(ts); Thread t2 = new Thread(ts); t1.start(); t2.start(); } } (二)、 public class DuoThreah implements Runnable { int SharedValue=100; @Override public void run() { // TODO Auto-generated method stub SharedValue += 100; System.out.println("Value:"+ SharedValue); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DuoThreah ts = new DuoThreah(); Thread t1 = new Thread(ts); Thread t2 = new Thread(ts); t1.start(); t2.start(); } } (三)、 public class DuoThreah implements Runnable { int SharedValue=0; @Override public void run() { // TODO Auto-generated method stub SharedValue += 1; System.out.println("卖出票数为:"+ SharedValue+"张"); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DuoThreah ts = new DuoThreah(); Thread t1 = new Thread(ts); Thread t2 = new Thread(ts); Thread t3 = new Thread(ts); Thread t4 = new Thread(ts); t1.start(); t2.start(); t3.start(); t4.start(); } } (四)、 public class DuoThreah implements Runnable { int SharedValue=0; int SurplusValue=1000; @Override public void run() { // TODO Auto-generated method stub while(SurplusValue!=0) { SharedValue +=1; SurplusValue -= 1; System.out.println("卖出票数为:"+ SharedValue+"张"+","+"剩余票数为:"+ SurplusValue+"张"+";"); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DuoThreah ts = new DuoThreah(); Thread t1 = new Thread(ts); Thread t2 = new Thread(ts); Thread t3 = new Thread(ts); Thread t4 = new Thread(ts); t1.start(); t2.start(); t3.start(); t4.start(); } } 九、 掌握Java如何实现多线程程序的设计,Java中实现多线程的方法,线程的启动、挂起、退出等相关操作 参考书本P101至P132多线程的代码,设计一个多线程下载程序 a) 能够输入下载地址 b) 能够控制下载动作 c) 要求使用多线程来下载,下载时要能响应其它用户操作。 d) 要能够显示下载的进度 十、 掌握Java集合的使用方法,Java中方法的重写步骤,面向对象程序设计的方法 设计一个Java程序,要求能完成以下功能: 1、程序要能够存储任意多个学生的信息。 2、学生的信息有:学号、姓名、性别、年龄等相关字段。 3、可以增加学生的信息,如果学号相同就不能添加 4、根据用户输入的学号信息,可以删除掉相应的学生信息 5、如果用户输入学号和其它信息,那么可以更改相应学生的信息 6、在测试类里面进行相应的操作,可以完成上面的任务。 Student类: public class Student { //定义学生类 private int StuID; private String StuName; private String StuSex; private int StuAge; //定义学生类信息 public Student(int id,String name,String sex,int age) { this.StuID = id; this.StuName = name; this.StuSex = sex; this.StuAge = age; } //定义设置,获取学生信息的方法 public int getId() { return StuID; } public void setId(int id) { this.StuID = id; } public String getName() { return StuName; } public void setName(String name) { this.StuName = name; } public String getSex() { return StuSex; } public void setSex(String sex) { this.StuSex = sex; } public int getAge() { return StuAge; } public void setAge(int age) { this.StuAge = age; } //重载equals函数,是学号属于学生类的学生在学好重复的情况下无法添加 public boolean equals(Object o) { if(o instanceof Student) { Student stu = (Student)o; if(this.StuID == stu.getId()) return true; else return false; } return false; } //重载hashCode函数,确保学号不重复 public int hashCode() { return StuID; } } StuOP类: import java.util.HashSet; import java.util.Set; public class StuOP { //定义学生信息操作类 private Set<Student> students; //定义添加学生信息的方法 public StuOP() { students = new HashSet<Student>(); } //定义添加学生信息的方法 public void Add(Student stu) { students.add(stu); } //定义删除学生信息的方法 public void Delete(int id) { for(Student stu : stude
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服