第一篇:Java及Javaweb(jsp)实验1
实验1:Java类与对象
一、实验目的
(1)掌握Java类的继承关系和派生方法。(2)理解多态的概念与使用。(3)掌握接口的定义和使用。
二、实验任务
(1)按要求编写一个Java程序。
(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。
三、实验内容
1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。2.为类Student增加一个方法public String toString(),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。
四、调试过程
五、运行结果
六、心得体会
实验代码: package taru.cn;public class SuperClass {
} int x;SuperClass(){
x=3;} voiddoSomething(){ System.out.println(“in SuperClass.doSomething()”);System.out.println(“in SuperClass : x=” +x);
} package taru.cn;public class SubClass extends SuperClass {
int x;SubClass(){
}
super();//调用父类的构造方法
} voiddoSomething(){
super.doSomething();//调用父类的方法 x=5;
//super()要放在方法中的第一句
System.out.println(“in SubClass :x=”+x);System.out.println(“in SubClass.doSomething()”);System.out.println(“super.x=”+super.x+“ sub.x=”+x);} package taru.cn;class Student{
longstudentID;intclassID;String name;
String sex;int age;
public Student(long studentID,intclassID,Stringname,Stringsex,int age){
this.studentID=studentID;
this.classID=classID;
this.name=name;this.sex=sex;this.age=age;}
public long getStudentID(){
returnstudentID;} publicintgetClassID(){ returnclassID;} public String getName(){
return name;}
public String getSex(){ return sex;}
publicintgetAge(){ return age;}
public String toString(){
return “学号:”+getStudentID()+“n班号:”+getClassID()+“n姓名:”+getName()+“n性别:”+getSex()+“n年龄:”+getAge();} }
package taru.cn;public class StudentDemo1 {
public static void main(String args[]){
Undergraduate st1 = new Undergraduate(“张三”,50,70,60);
st1.Display();
Graduate st2=new Graduate(“李四”,70,80,90);
st2.Display();
}
} package taru.cn;
public class Inheritance {
} public static void main(String args[]){
SubClasssubC=new SubClass();subC.doSomething();}
第二篇:Java实验3
实验3 常用类(2学时)
一、实验目的
1.熟悉Java中的String、StringBuffer、Math、包装器类、Scanner类的使用方法。2.使用常用类解决一般性的应用问题。3.掌握JavaSE API文档的使用方法。
二、实验内容
1.编写一个Java应用程序。用户从键盘输入一个整数,程序将判断这个数是几位数并输出其位数,并判断这个数是否是回文数(是,则输出“是回文数”,否则输出“不是回文数”)。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。要求:定义两个方法,一个用于获取一个整数的位数,一个用于返回一个整数是否为回文数。
2.编写一个程序,由用户从键盘输入一个字符串,程序输出该字符串中的大写英文字母数,小写英文字母数以及非英文字母数。(用户键盘输入用Scanner类实现)
3.在安排教师监考时,需要从一组教师中随机选取n个教师参加监考。要求实现一个类RandomTeacher的静态方法public static String[] getRandomTeachers(String[] teachers, int n),能够从teachers中随机选择n个教师(名字)并返回。
4.假设某餐馆中每桌顾客点菜记录的格式为“北京烤鸭:189 西芹百合:15 清蒸鲈鱼:80”。编写一个类的方法,能够根据点菜内容对应的字符串输出点菜记录中每种菜的价格以及总的价格。
5.编写一个方法,返回一个double型的二维数组,数组中的元素通过解析字符串参数获得。例如,字符串参数:“1,2;3,4,5;6,7,8”,对应的数组为:
d[0,0] = 1.0 d[0,1] = 2.0
d[1,0] = 3.0 d[1,1] = 4.0 d[1,2] = 5.0
d[2,0] = 6.0 d[2,1] = 7.0 d[2,2] = 8.0
三、实验要求
完成程序设计并提交代码。
第三篇:Java实验5
实验五
一、实验内容:
从键盘上输入一行字符串。
①将字符按Unicode字典顺序排序后输出。②统计每个字符出现的次数和位置。③统计含有的单词个数。④正向和反向输出单词。
二、算法思路:
要完成任务①:使用StringTokenizer类的countTokens()方法和nextToken(),将单词存储到String a[ ]数组中,再定义一个空的String b[ ] , 用来存放比较大小后的单词。
要完成任务③:使用StringTokenizer类中的countTokens()方法。
要完成任务②:定义charArray[i ]存放字符
intArray[ i]出现字符的次数 addr[i][ ]用来存放出现字符的位置
要完成任务④:可以通过之前定义存储的String a[ ]和相关简单算法,输出正向和反向的单词。
三、实验结果:
四、程序代码: import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class TokenTest extends JFrame{
private JLabel promptLabel;
private JTextField inputField;
private JTextArea outputArea;
public TokenTest(){
super(“字符串”);
Container container=getContentPane();
container.setLayout(new FlowLayout());
promptLabel=new JLabel(“输入一个句子,然后按回车键”);
container.add(promptLabel);
inputField=new JTextField(20);
inputField.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
StringTokenizer tokens=new StringTokenizer(event.getActionCommand());
int num=100;
int n=0;
num=tokens.countTokens();
String a[]=new String[num];
String b[]=new String[num];
while(tokens.hasMoreTokens())
{
a[n++]=tokens.nextToken();
}
n=0;
int m=0;
while(m { for(int i=0;i<=n;i++) { if(i==n) b[i]=a[m]; else if(a[m].compareToIgnoreCase(b[i])<0) { for(int j=n;j>i;j--) b[j]=b[j-1]; b[i]=a[m]; break; } } m++; n++; } outputArea.setText(“按Unicode字典顺序排序后输出:n”); for(int i=0;i outputArea.append(b[i]+“ ”); outputArea.append(“nn单词个数:”+num); String buffer=inputField.getText(); char charArray[]=new char[26]; int intArray[]=new int[26]; int addr[][]=new int[26][26]; n=0; for(int i=0;i { for(int j=0;j<=n;j++) { if(j==n) { charArray[j]=buffer.charAt(i); intArray[j]++; addr[j][intArray[j]-1]=i; } else if(buffer.charAt(i)==' ') {n--;break;} else if(buffer.charAt(i)==charArray[j]) { intArray[j]++; addr[j][intArray[j]-1]=i; n--; break; } } n++; } 置:“); }); } outputArea.append(”nn统计每个字符出现的次数和位置n“);for(int i=0;i outputArea.append(charArray[i]+” 次数:“+intArray[i]+” 位 for(int j=0;j { outputArea.append(addr[i][j]+“ ”); } outputArea.append(“n”);} String s=“n”; outputArea.append(“n单词正向输出:n”); for(int i=0;i outputArea.append(a[i]+“ ”); outputArea.append(“nn单词反向输出:”); for(int i=0;i { for(int count=a[i].length()-1;count>=0;count--) { s+=a[i].charAt(count); } s+=“ ”; } outputArea.append(s);} container.add(inputField);outputArea=new JTextArea(20,40);outputArea.setEditable(false);container.add(new JScrollPane(outputArea));setSize(500,500);setVisible(true); public static void main(String[] args){ TokenTest application=new TokenTest(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 五、心得体会: 这个程序,应该是我目前所花时间最长编写出来的程序,从草稿纸上酝酿出算法,到最后在计算机上成功运行,花了3个晚上的时间,其中有一天晚上,本人忘我编程到凌晨12:30,当中遇到了很多出乎意料的问题,但是在遇到问题时,我积极思考,反复调试,编程开始阶段,程序一直异常跳出,我也花了挺多时间找错误,也花了不少时间检验算法的严密性。程序中用红笔标注的,是我花时间最长的地方,也是本程序的难点和要点。通过这次程序,我很好地深入钻研了StringTokenizer类的用法,原来使用其对象countTokens()方法和hasMoreTokens()方法一次之后,再次调用这些方法,countTokens()返回值是0;hasMoreTokens()返回null。正是由于自己一开始对StringTokenizer类用法的不了解,我才在一开始程序中,异想天开的多次使用了countTokens()方法和hasMoreTokens()方法,导致程序无法达到我的要求,所以我经历了漫长而艰辛的调试过程后,我才写出了本程序,但我觉得,通过这种程序的锤炼,自己的变成能力会有很显著的提升。 1、实验一:多线程程序设计:炮打飞机 实验目的:学会使用多线程进行并发程序设计 实验内容:编写一个应用程序模拟大炮打飞机。在GUI界面上,飞机水平飞行,用界面上的按钮控制大炮的运行方向(如向左,向右,向上,向下)。当炮弹碰着飞机后,飞机坠落。 2、实验二:数据库编程:书目信息管理 实验目的:掌握数据库编程技术。能正确连接数据库,能对数据库中信息进行查询、插 入、删除、修改。 实验内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书 号、价格字段。设计一个GUI界面进行书目管理。在该界面上有四个选项卡,分别是查询、插入、删除、修改。点击查询选项卡,出现的界面上有书名、作者、出版社、书号四个文本框,一个按钮和一个只读文本区。文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的“查询”按钮,可以在界面下方的文本区中显示出符合条件的书目详细信息。点击插入选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。在文本框中输入信息后,点击“插入”按钮,该书目信息插入数据库表中。点击删除选项卡,出现的界面上有书名文本框和一个按钮,输入书名后点击“删除”按钮,该书目信息从数据库表中删除。点击修改选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。输入的书名必须是已存在的,否则会弹出消息框显示出错信息。输入信息后,点击“修改”按钮,数据库表中的相应书目信息被修改为新值。 3、实验三:Applet编程:鸭子的移动 实验目的:掌握Applet程序设计的方法,学会在Applet中绘制图片,能采用双缓冲技术进行图片绘制,会在Applet中采用多线程进行动画显示。能在Applet中实现动画的平滑显示,避免闪烁现象。 实验内容:在Applet窗口中显示一只鸭子图片,要求这只鸭子以每秒100帧的速率水平移动,移到窗口边界再返回移动。在窗口中点击鼠标,鸭子停止移动;再次点击鼠标,鸭子恢复移动。 4、实验四:网络编程:聊天室的实现 实验目的:会编写客户端和服务器程序实现C/S模式下的通信,会使用多线程进行网络编程。 实验内容:编写一个聊天室程序:客户端界面请自行设计,可使其具有个性化特征; 可在实现基本的聊天室功能的基础上添加个性化的功能。 实验 一、简单Java程序设计 一、实验目的 1. 学习使用JCreator开发JAVA代码。 2. 了解JAVA的运行环境,掌握开发JAVA代码所需要的相关配置。3. 在JCreator中输入习题程序,验证程序的正确性,熟悉开发环境。 二、实验内容 1. 设置实验环境 a.安装JDK,下载JDK包以后,按安装向导的提示依次安装,可直接安装在C盘根目录下。 b.更新环境变量: 2. 编写程序:由键盘输入两个字符串“12”与“24”,将它们转换成整数,然后计算并输出这两个数的和。 3. 编写程序:由键盘输入给出一个百分制成绩,要求输出成绩等级’A’、’B’、’C’和’D’,90分以上为’A’,75~89为’B’,60~74为’C’,60分以下为’D’。 4. 编一程序,求一个10项所组成的等差数列,其奇数项之和为135,偶数项之和为150。5. 用for语句输出下列数字金字塔: 1 3 1 1 3 5 3 1 3 5 7 5 3 1 1 3 5 7 9 7 5 3 1 6. 编写程序:由键盘输入一正整数,求出小于且等于这个数的所有质数。实验 二、基本数据类型和数组 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。 2.了解数组的使用与JAVA中对字符串的主要操作。 3.在JCreator中输入习题程序,验证程序的正确性,熟悉开发环境。 二、实验内容 1.编写程序:由键盘输入一整数,求出该数所有的因子,如输入6,则输出的6的所有因子为1、2、3、6。 2假设有一条钢材长2000米,每天截取其中的一半,编一程序求出多少天后,钢材的长度开始短于5米? 3编写程序:利用数列4(113151719111)来取得的近似值。并计算在得到3.14159之前,这个数列要取到第几项? 4使用java.long.Math类,生成10个0~99之间的随机整数,求出它们中的最大值和最小值。 提示:java.long.Math类支持random方法:Math.Random()。该方法返回值是正数,类型为double,范围为0~1。如果要得到其它范围的数,则要进行相应的转换。例如要得到(a,b)之间的整数的方法是:(int)((b-a+1)*Math.random()+a)。若要得到(0,99)之间的整数可以使用下列语句: int m =(int)(100*Math.random());5编写程序:声明一数组来存放12个月的英文名称,由用户从键盘输入月份,如输入8,则程序输出相应的月份名称:August。同时请大家考虑若是用户输入了1~12以外的内容,你的程序将如何应对? 6编写程序:由键盘输入一16位的长整数,统计0~9这十个数字每一个出现的次数。7编写程序:将两个各有6个整数的数组,合并成一个由小至大排列的数组(该数组的长度为12)。8编写程序:以递归的方式实现1+2+3+„„+n(n = 200)的计算。 实验 三、类与对象 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。2.了解类和对象之间的关系。 3.在JCreator中声明一个类,其中有多个构造方法。用不同的构造方法创建对象。 二、实验内容 声明一个矩形类Rectangle,其中有多个构造方法。用不同的构造方法创建对象,并输出矩形的周长和面积。声明一个矩阵类Matrix,有这样一些实例方法:将一个矩阵转置、求两个矩阵的和。写出下面程序的运行结果 class University { String name, city;University(String name, String city){ this.name = name;this.city = city;System.out.println(“super class”);} boolean samecity(String city){ if(city.equals(this.city))return true;else return false;} boolean samecity(University u){ return samecity(u.city);} } class UniversityWorld extends University { String country;UniversityWorld(String name, String city, String country){ super(name,city);this.country = country;System.out.println(“sub class”);} boolean samecity(String city, String country){ if(city.equals(this.city)&& country.equals(this.country))return true;else return false;} boolean samecity(UniversityWorld other){ return samecity(other.city, other.country);} } class UniversityWorldCity { public static void main(String args[]){ String city = “上海”,country = “中 国”;UniversityWorld u1 =new UniversityWorld(“北京大学”, “北京”, “中 国”);UniversityWorld u2 = new UniversityWorld(“清 华 大 学”, “北京”, “中 国”);System.out.println(“u1 = ” + u1.name + “, ” + u1.city + “, ” +u1.country);System.out.println(“u2 = ” + u2.name + “, ” + u2.city+ “,” + u2.country);System.out.println(“city = ” + city + “, country = ” +country);System.out.println(“u1.samecity(u2)= ” + u1.samecity(u2));System.out.println(“u1.samecity(city, country)= ” + u1.samecity(city,country));} } 实验 四、继承与接口 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。2.了解类的成员的访问权限和包的关系。 3.了解继承和接口的区别已及它们各自的作用,熟悉开发环境。 二、实验内容 创建两个String类的对象str1和str2,判断sr2是否是str1的子串。如果是,输出str1中,在子串ztr2前和后的字符串。如: “Action”是“addActionListener”的子串,在此子串前是字符串”add”,后面是字符串”Listener”。写出下面程序的运行结果 class Leve1{ String name=“"; int height,width;public Leve1(){;} public Leve1(Leve1 le){ name=le.name; height=le.height; width=le.width;} public Leve1(String na,int h,int w){ name=na; height=h; width=w;} public int higherthen(Leve1 t){ return this.height-t.height;} public void print(){ System.out.println(”class Leve1: “); System.out.println(”Name=: “+name+”, Height=: “+height+”, Width=: “+width);} } class Leve2 extends Leve1{ int width; public Leve2(){;} public Leve2(Leve1 le,int h,int w){ super(le); height=h; width=w;} public int widerthen(){ return width-super.width;} public void print(){ System.out.println(”class Leve2: “); System.out.println(”Name=: “+name+”, Height=: “+height+”, Width=: “+width);} } public class Lev_ex{ public static void main(String args[]){ Leve1 le1=new Leve1(”Tower_1“,50,20); Leve2 le2=new Leve2(le1,40,25); le1.print(); le2.print(); System.out.println(”Leve1 is “+le1.higherthen(le2)+” highter then Leve2.“); System.out.println(”Leve2 is “+le2.widerthen()+” wider then Leve1.“);} } 3、编写代码,完成功能:建立一个窗口,窗口上方横列“文件”、“选项”两个菜单项。其中“文件”菜单下隐含“退出”、“显示”、“隐藏”三个子菜单,每个子菜单都可用快捷键选择并且“退出”与其他两个子菜单之间用分隔线分隔。“选项”菜单下包含名称为“1”、“2”、“3”。。。“50”的50个菜单项,当选择其中任何一个数字选项时,窗口正中将显示0至该数字之间所有数的平方和(包含数字本身)。如选中选项“3”,则显示14(SUM=1*1+2*2+3*3=14)。实验 五、常用实用类 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。2.了解常用实用类的使用。 二、实验内容 求和工具。编写一个程序:设计如下面图示的界面。在该界面中,可以在第一个文本框中输入第一个加数,可以在第二个文本框中输入第二个加数,当用鼠标的左键单击按钮”="时,在第三个文本框中显示出前面两个加数之和。设计一个简单的计算器,能进行两个数的加、减、乘、除。界面如图所示。“clear”按钮用于清理文本域的内容。16方格排序游戏设计。编写一个程序:如图所示,要求在界面上设计4×4的按钮,即16个按钮排列成4×4的网格形状。其中有且只有15个按钮上有从1到15的数字,而且这些数字在按钮上不重复出现。另外有一个按钮上没有数字。当程序刚启动时这15个数字是随机排列的。当用鼠标左键单击某个按钮,如果该按钮上有数字而且该按钮在没有数字的按钮的边上,则将该按钮上的数字给没有数字的按钮,同时该按钮就变成了没有数字的按钮。当15个数字在4×4的网格中呈顺序或逆序排列,则显示消息框表明排列成功,并重新随机排列这15个数字在按钮网格上的位置。(提示: Math.random()可以产生随机数) 实验 六、GUI编程 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。2.了解GUI编程。 二、实验内容 1. 在下拉列表choice1中选择整数N,单击“生成”按钮在列表框List1和List2中显示N对的随机数(2~1000),在列表框List3中显示每对随机数的最大公约数。单击“排序”按钮,List3中的N个最大公约数按从小到大排列。(提示:排序算法采用冒泡法。两数的最大公约数可以采用欧几里得算法:不断用两数中较大数减较小的数,至到有一个数等于0。另外一个大于0的数就是这两数的最大公数约)。 2.完成程序实现一个简单的文本编辑器,其中File菜单实现Exit子菜单,Edit菜单实现Copy、Cut、Paste、DeleteAll功能,Option菜单实现字体设置功能。 3.在文本框中输入函数y=sin(ax)中a的值,点击draw按钮画出函数图形。 实验 七、多线程 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。2.了解多线程编程。 二、实验内容 1、编写程序,有两个线程,分别在屏幕上显示1~50之间的奇数和偶数。观察一共有几个线程在运行,各个线程是怎样被处理器执行的。 2、编写一个程序,创建两个线程,其中一个产生5个1~100之间的随机整数,另一个线程将这5个数加起来。观察运行的情况,分析是否正确。如果结果有问题,想办法解决它。 实验 八、图形图像 一、实验目的 1.进一步熟悉JCreator开发JAVA代码。2.了解图形图像编程。 二、实验内容 1、编写一个模拟画图的程序,用户可以选择绘图的图形,如“线”、“矩形”、“圆”、“椭圆”等,选择后即可在屏幕上移动鼠标画图。(提示:选择图形可以使用单选按钮组,画图需要处理鼠标事件。)第四篇:java上机实验
第五篇:JAVA实验指导书