基本JAVA实验题及代码
更新时间:2024-05-31 08:35:01 阅读量: 综合文库 文档下载
*^__^*
JAVA*^__^*
一、熟悉Java编译器、Java解释器和Java反编译工具的使用方法
1.编写一个计算器类,要求实现加、减、乘、除运算,注意在进行除法运算时,如果除数为0,那么就直接输出Error来 下面代码为判断是否为数字,如果是数字,那么返回是true,否则返回false,在使用下面代码前,要在程序头导入包:import java.util.regex.*;
public static boolean isNumeric(String str) { Pattern pattern = Pattern.compile(\ Matcher isNum = pattern.matcher(str); if( !isNum.matches() ) { return false; } return true; }
2.要求用户通过命令行去执行程序,执行的时候以参数的形式输入两个操作数和一个操作法,例如第一步编译成功后的名称为MyCal.class,那么在命令行执行MyCal 10 + 15 ,那么就计算打印出10加15的结果,打印结果:输出:10+15=25。
3.要求用户在执行的时候必须要输入三个参数,如果参数不够,那么提示用户输入三个参数,然后退出。另外要判断用户输入的参数是否是数字,如果不是,那么也提示,然后直接退出。
二、熟悉Eclipse编写Java程序熟悉,Java中变量的定义和使用,Java中的程序结构 1、编写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类型的数据。
代码如下:
import java.util.*; public class Yhsj { private int rows; public int getRows(){ return rows;
1
}
public void steRows(int rows) {
this.rows=rows; }
public Yhsj(int rows) {
this.rows=rows; }
static void show(int Row) {
int a[][]=new int[Row+1][]; for(int i=0;i<=Row;i++) {
a[i]=new int[i+1]; }
for(int i=0;i<=Row;i++) {
for(int j=0;j<=a[i].length-1;j++) {
if(i==0||j==0||j==a[i].length-1) a[i][j]=1; else
a[i][j]=a[i-1][j-1]+a[i-1][j]; } }
for(int i=0;i<=Row;i++) {
for(int k=i;k for(int j=0;j<=a[i].length-1;j++) { System.out.print(a[i][j]+\); } System.out.println(); } } public static void main(String[] args) { int LN=0; System.out.println(\输入要打印的行数:\); Scanner sc = new Scanner(System.in); LN = sc.nextInt(); Yhsj aming=new Yhsj(LN); show(aming.getRows()-1); 2 } } 运行结果: 此作用只是证明它有运行结果,所以小小的,呵呵。。。 三、熟悉Eclipse编写Java程序,Java中程序的结构,类的声明和定义, 掌握面向对象的基本思想,抽象对象并定义类,类的继承结构,理解并能熟练运用类的多态性,抽象类和接口及它们的区别,理解并熟练运用抽象类和接口解决耦合问题。 1、构造一个抽象类Shape,它有两个抽象的方法area()和perimeter(),分别表示求面积和周长,此外,它还有一个具体方法message(),能输出类的一些信息。 public abstract class Shape { public abstract void area(); public void message(){ } } //创建抽象类 //创建抽象方法 //创建具体方法 public abstract void perimeter(); //创建抽象方法 System.out.print(\); 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 { } //创建Rectangle类,继承Shape类,并实现接口Graph public class Rectangle extends Shape implements Graph{ // 重写抽象类的抽象方法 public void area() { // 重写抽象类的抽象方法 public void area() { } // 重写抽象类的抽象方法 public void perimeter() { } // 重写接口的抽象方法 public void draw(){ }; 3 } // TODO Auto-generated method stub // 重写抽象类的抽象方法 public void perimeter() { } // 重写接口的抽象方法 public void draw(){ }; } // TODO Auto-generated method stub 4、构造测试类Test,其有方法getShapeData(Shape s),它输出s的面积和周长,构造矩形实例和圆实例,体会area方法和perimeter方法的多态性。 public class Test { } } public static void main(String[] args) { } s.area(); s.perimeter(); //创建Test类 //创建 方法 public static void getShapeData(Shape s){ getShapeData(new Circle()); getShapeData(new Rectangle()); //抽象类的多态 //抽象类的多态 5、类似上题,为Test添加方法drawGraph(Graph g),它“画出”Graph的图形----调用draw方法,构造矩形实例和圆实例,体会draw方法的多态性。 public class Test { public void drawGraph(Graph g){ } public static void main(String[] args) { } } 总结: 1、根据自己对实验的理解,说明一下在本实验中,抽象类Shape的作用是什么? 产生子类的同时给于子类一些特定的属性和方法 2、 分析说明抽象类和接口的异同? 抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可以被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可以实现多个接口。 1. 类是对对象的抽象;抽象是对类的抽象;接口是对行为的抽象。 //创建Test类 //创建 方法 g.draw(); Test t=new Test(); t.drawGraph(new Circle()); //接口的多态 t.drawGraph(new Rectangle()); //接口的多态 4 2. 如果行为跨越不同的对象,可使用 ;对于一些相似的类对象,用继承抽象类。 3. 抽象类是从子类发现公共的东西,泛化出父类,然后子类继承父类;而接口是根本不知子 类的存在,方法如何实现还不确定,预先定义。 四、 五、熟悉Eclipse编写Java程序,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 //创建教师接口 { } 定义研究生类Graduate public class Graduate implements IStudentinterface, ITeacherinterface { { String name,sex; int age; float fee,pay; public Graduate(String name,String sex,int age) //定义构造函数设置姓名,性别 } @Override public float getFee() { //实现返回学费数据的方法 // TODO Auto-generated method stub this.name = name; this.sex = sex; this.age = age; public void setPay(float pay); public float getPay(); //抽象(设置教师工资)方法 //抽象(获取教师工资)方法 及年龄 5 } } return fee; @Override public void setFee(float fee) { } @Override public float getPay() { } @Override public void setPay(float pay) { } this.pay = pay; //实现设置工资数据的方法 // TODO Auto-generated method stub return pay; //实现返回工资数据的方法 // TODO Auto-generated method stub this.fee = fee ; //实现设置学费数据的方法 // TODO Auto-generated method stub 定义测试类Test实例化方法 public class Test { } 六、掌握Java高效类的特征,Java中如何设计高效的低耦合高聚合类,掌握接口在类的耦 /** * @param args */ public static void main(String[] args) { } // TODO Auto-generated method stub Graduate zs = new Graduate(\,\男\,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(\); 合性中的作用 6 1、设计一个学生信息管理系统,要求能对学生的信息进行增删改查的操作,在设计中要求能充分合理使用低耦合和高聚合的特征。注意,在对数据库的操作语句不需要完成,只需要进行相应的提示即可。 实验代码如下: //创建学生基类 Students public class Students { } private String Name; private String Sex; private int Age; public Students (String strName, String strSex, int iAge) //设置学生信息的构造{ } public String GetStudnetName(String strName) { } public String GetStudnetName() { } public String GetStudentSex() { } public int GetStudentAge() { } return Age; return Sex; return Name; this. Name = StrName; this. Name = StrName; this. Sex = StrSex; this. Age = IAge; 方法 //创建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() 7 } +\年龄: \ + S1.GetStudentAge(); System.out.println(str_Sql); return S1; }//提供添加学生信息的方法 public void DeleteStudent(Student s1) { public void DeleteStudent(String strName) { String strSql = \修改学生信息\ + \姓名: \ + S1.GetStudnetName(); System.out.println(strSql); 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、 设计一个学生信息类,具有学号、姓名、性别、成绩 8 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) { } private String courseID; public String getCourseID() { } public void setCourseID(String courseID) { } private String courseName; public String getCourseName() { } public void setCourseName(String courseName) { } private int courseScore; public int getCourseScore() { } public void setCourseScore(int courseScore) { } this.courseScore = courseScore; return courseScore; this.courseName = courseName; return courseName; this.courseID = courseID; return courseID; super(); this.courseID = courseID; this.courseName = courseName; this.courseScore = courseScore; 学生信息类: package com.stu.info; 9 public class Student implements Cloneable{ private String stuNo; public String getStuNo() { } public void setStuNo(String stuNo) { } private String stuName; public String getStuName() { } public void setStuName(String stuName) { } private String stuSex; public String getStuSex() { } public void setStuSex(String stuSex) { } private Score[] stuScore; public Score[] getStuScore() { } public void setStuScore(Score[] stuScore) { return stuScore; this.stuSex = stuSex; return stuSex; this.stuName = stuName; return stuName; this.stuNo = stuNo; return stuNo; public Student(String stuNo, String stuName, String stuSex, Score[] stuScore) { } super(); this.stuNo = stuNo; this.stuName = stuName; this.stuSex = stuSex; this.stuScore = stuScore; 10 } } this.stuScore = stuScore; public int hashCode() { } return Integer.parseInt(this.stuNo); public boolean equals(Object obj) { } @Override public String toString() { } protected Object clone() throws CloneNotSupportedException { } Student stu=(Student)(super.clone()); stu.stuScore=this.stuScore; return stu; String strTemp = this.stuNo+\+this.stuName+\+this.stuSex+\; for(int i=0;i return strTemp; strTemp+=this.stuScore[i].getCourseScore()+\; if(this.stuNo== (String) obj ) { } return true; return false; 测试类: package com.stu.info; public class Test { /** * @param args 11 */ public static void main(String[] args) throws CloneNotSupportedException { // TODO Auto-generated method stub Score sc=new Score(\,\英语1\,80); Score sc1=new Score(\,\英语1\,87); Score sc2=new Score(\,\英语1\,90); Score sc3=new Score(\,\英语1\,81); Score[] score=new Score[4]; score[0]=sc; score[1]=sc1; score[2]=sc2; score[3]=sc3; Student stu=new Student(\,\张三\,\男\,score); stu.setStuScore(score); System.out.println(\该对象的学号是:\+stu.hashCode()); if(stu.equals(\)) { } else { } Student stu1=(Student)stu.clone(); System.out.println(\克隆对象后的学号是:\+stu1.hashCode()); Score sco=new Score(\,\英语1\,90); Score sco1=new Score(\,\英语1\,97); Score sco2=new Score(\,\英语1\,100); Score sco3=new Score(\,\英语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.getStuNo()+\不同啦\); System.out.println(\与 对象学号:\+stu.getStuNo()+\相同啦\); 12 } } System.out.println(stu.toString()); System.out.println(stu1.toString()); System.out.println(stu.toString()); 程序结果: 八、掌握Java如何实现多线程程序的设计,Java中实现多线程的方法 参考书本多线程的代码,设计具有以下功能的程序 ? 总共有1000张火车票 ? 有四个售票点来销售(用四个线程来模拟实现) ? 当线程销售出去一张票时,显示线程销售的提示信息 (一)public class DuoThreah implements Runnable { @Override public void run() { // TODO Auto-generated method stub int nonSharedValue = 100; nonSharedValue += 100; System.out.println(\+ 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(); 13 } (二)、 public class DuoThreah implements Runnable { } /** * @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(); int SharedValue=100; @Override public void run() { // TODO Auto-generated method stub SharedValue += 100; System.out.println(\+ SharedValue); } (三)、 public class DuoThreah implements Runnable { int SharedValue=0; @Override public void run() { // TODO Auto-generated method stub SharedValue += 1; 14 } 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() { { SharedValue +=1; SurplusValue -= 1; System.out.println(\卖出票数为:\+ SharedValue+\张\+\+\剩余票数为:\+ } } // TODO Auto-generated method stub while(SurplusValue!=0) SurplusValue+\张\+\); 15 } /** * @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、根据用户输入的学号信息,可以删除掉相应的学生信息 16 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) { } //定义设置,获取学生信息的方法 public int getId() { } public void setId(int id) { } public String getName() { } public void setName(String name) { } public String getSex() { } public void setSex(String sex) { } public int getAge() { } public void setAge(int age) { } //重载equals函数,是学号属于学生类的学生在学好重复的情况下无法添加 this.StuAge = age; return StuAge; this.StuSex = sex; return StuSex; this.StuName = name; return StuName; this.StuID = id; return StuID; this.StuID = id; this.StuName = name; this.StuSex = sex; this.StuAge = age; //定义学生类 17 } public boolean equals(Object o) { } //重载hashCode函数,确保学号不重复 public int hashCode() { } return StuID; if(o instanceof Student) { Student stu = (Student)o; if(this.StuID == stu.getId()) } return true; return false; else return false; StuOP类: import java.util.HashSet; import java.util.Set; public class StuOP { private Set //定义添加学生信息的方法 public void Add(Student stu) { } //定义删除学生信息的方法 public void Delete(int id) { } //定义修改学生信息的方法 public void Update(Student stu) { } //定义通过学号查询该学生信息的方法 Delete(stu.getId()); students.add(stu); for(Student stu : students) if(stu.getId()==id) students.remove(stu); students.add(stu); students = new HashSet //定义学生信息操作类 18 } public Student Show(int id) { } ////定义查询所有学生信息的方法 public Set return students; for(Student stu:students) if(stu.getId()==id) return stu; return null; Test类: import java.util.Set; public class Test { public static void main(String[] args) { StuOP stu = new StuOP(); Student s1 = new Student(2009001,\张三\,\男\,21); Student s2 = new Student(2009002,\李四\,\男\,22); Student s3 = new Student(2009001,\王五\,\男\,23); Student s4 = new Student(2009004,\朱六\,\女\,21); //添加四个学生信息 stu.Add(s1); stu.Add(s2); stu.Add(s3); stu.Add(s4); //显示当前所有学生的信息 Set ShowInfo(stus); System.out.println(); //删除指定学号的学生信息 //stu.Delete(2009002); //修改制定学号的学生信息 Student s5 = new Student(2009004,\朱六\,\女\,24); stu.Update(s5); //显示指定学号的学生信息 19 } } Student s = stu.Show(2009001); ShowInfo(s); System.out.println(); //显示当前所有学生的信息 for(Student stus:set) ShowInfo(stus); System.out.println(); //定义显示类 public static void ShowInfo(Student stu) { } System.out.print(stu.getId()+\); System.out.print(stu.getName()+\); System.out.print(stu.getSex()+\); System.out.print(stu.getAge()+\); System.out.println(); 运行结果: 十一、掌握Java中数据库连接方式,Java中对数据库内容的操作 设计一个Java程序,通过DatabaseMetaData接口列出系统数据库(mysql)中的表结构信息。 提示:使用getTables(conn.getCatalog(), \, null, types)获取数据库表的列表信息,其中String[] types = { \ }; 使用getColumns(conn.getCatalog(), null, rs.getString(3), null);获取字段信息。 import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; 20
正在阅读:
基本JAVA实验题及代码05-31
2012年学生党建工作检查通报五篇范文08-23
部门个人工作总结08-23
以乡镇为单位疫苗接种率达90%培训资料07-01
党员干部现代远程教育工作总结05-29
华医网 继续教育 项目学习 临床护理教学实践探讨 答案01-08
SPIN技术:顾问式销售的利器12-14
一件难忘的趣事作文600字06-20
上海永大电梯新故障码解说04-12
高压变频器调试方案10-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 代码
- 基本
- JAVA
- 遇到什么样的人 就有什么样的婚姻
- 《低碳经济》继续教育18套试卷及答案
- 2017年中国家庭通信行业现状及市场前景预测(目录) - 图文
- 如何利用文化创意,带动乡村农庄发展?(附案例)
- 会计学习题集
- 2017年Fenbi模考大赛第七季试题及答案
- EMGUCV基础
- 2014新版人教版八年级下册Unit - 2 - Ill - help - to - clean -
- 土豆去皮机毕业论文
- 对国有企业落实“三重一大”决策制度的几点认识
- 电机学期末复习资料
- 2017-2022年中国天然气水合物产业深度调研报告(目录) - 图文
- 辩论 - 图文
- 《播音主持业务》练习题(三)
- 实验动物中心建设项目可行性研究报告
- 路基土石方工程施工方法和工艺
- 民办学校可行性报告
- 材料科学与工程学院就业工作会议记录
- 建筑工程BIM技术推广应用管理办法
- 求知杯题库