Java实验报告Word下载.docx
《Java实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《Java实验报告Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
}
2.
System.out.println(sum(1,100));
/**
*计算a到b的累加结果
*@parama
*@paramb
*@return
*/
privatestaticintsum(inta,intb){
intsum=0;
inti=a;
while(i<
=b){
sum+=i;
i++;
}
returnsum;
3.
importjava.util.Scanner;
publicstaticvoidmain(String[]args)throwsjava.io.IOException{
intk,n;
Scannerscanner=newScanner(System.in);
请输入k:
k=scanner.nextInt();
请输入n:
n=scanner.nextInt();
计算结果为:
+calc(k,n));
scanner.close();
*求a到b的累乘结果
privatestaticintfactorial(inta,intb){
intret=1;
for(inti=a;
i<
=b;
i++){
ret*=i;
returnret;
*计算组合数C(n,k)
*@paramk
*@paramn
privatestaticintcalc(intk,intn){
returnfactorial(n-k+1,n)/factorial(1,k);
四、实验小结(主要写一些实验中出现的问题,应注意的事项,以及实验体会)
主要注意jdk的环境变量的配置,以及javac和java命令的使用。
另外,从控制台获取键盘输入,可以使用类Scanner,将其import进来就可以使用了。
(注:
实验环境为Ubuntu11.04+jdk1.7.0_10)
实验二JAVA数组结构
(1)进一步理解数组、数组元素等基本概念;
(2)熟练掌握各类数组的定义方法;
(3)熟练掌握操作各类数组的基本方法;
(4)掌握Eclipse开发工具。
1.编程采用冒泡法实现对数组元素由小到大排序。
从键盘输入任意大小的10个整数,采用冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。
要求输出排序前的数据情况和排序后的数据情况,同时统计排序过程中发生数据交换的次数。
2.计算矩阵对角线元素之和
三、实验过程
1.编程如下:
System.out.print("
请输入10个数:
int[]array=newint[10];
for(inti=0;
10;
array[i]=scanner.nextInt();
print(array);
交换了"
+sort(array)+"
次"
publicstaticintsort(int[]array){
intcount=0;
array.length;
for(intj=i+1;
j<
j++){
if(array[i]>
array[j]){
intt=array[i];
array[i]=array[j];
array[j]=t;
count++;
}
}
returncount;
publicstaticvoidprint(int[]array){
i<
System.out.print(array[i]+"
"
System.out.println();
运行结果是:
2.程序如下:
int[][]matrix=newint[][]{{1,2,3,4},
{5,6,7,8},
{8,7,6,5},
{4,3,2,1}};
print(matrix);
对角元素和为:
+calc(matrix));
publicstaticvoidprint(int[][]matrix){
矩阵为:
matrix.length;
for(intj=0;
matrix[i].length;
j++)
System.out.print(matrix[i][j]+"
System.out.println();
publicstaticintcalc(int[][]matrix){
sum+=matrix[i][i];
Java中的数组实际上是对象,可以用length属性获得长度。
二维数组实际上是一维数组对象的数组。
实验三继承和多态的使用
(1)熟悉类和对象的概念;
(2)掌握类的构造函数的使用方法;
(3)掌握类的继承和派生方法;
(4)掌握面向对象的程序设计的基本思想和方法。
1.定义一个自己的数学类MyMath。
类中提供静态方法max,该方法接收3个同类型的参数,返回其中的最大值。
2.假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:
姓名、工号以及工资。
经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。
请使用继承的思想设计出员工类和经理类。
要求类中提供必要的方法进行属性访问。
2,3,5.Maxis"
+MyMath.max(2,3,5));
MyMath.java
publicclassMyMath{
publicstaticintmax(inta,intb,intc){
intm=(a>
b?
a:
b);
return(m>
c?
m:
c);
Staffstaff=newStaff("
张三"
"
1001"
staff.setSalary(5000);
staff.printInfo();
Managermanager=newManager("
李四"
1002"
manager.setSalary(8000);
manager.setAward(10000);
manager.printInfo();
Staff.java
publicclassStaff{
protectedStringname;
protectedStringid;
protectedfloatsalary;
publicStaff(Stringname,Stringid){
this.name=name;
this.id=id;
publicStringgetId(){
returnid;
publicStringgetName(){
returnname;
publicvoidsetSalary(floatsalary){
this.salary=salary;
publicfloatgetSalary(){
returnsalary;
publicvoidprintInfo(){
+name+"
员工号:
+id+"
工资:
+salary);
Manager.java
publicclassManagerextendsStaff{
protectedfloataward;
publicManager(Stringname,Stringid){
super(name,id);
publicfloatgetAward(){
returnaward;
publicvoidsetAward(floataward){
this.award=award;
super.printInfo();
奖金:
+award);
四、实验小结
继承可以使得代码被复用,还可以很好的体现类之间的逻辑关系;
多态则可以使对象拥有其独特的方法实现。
另外注意封装性,管理好成员的可见性,通过相应方法来读取和访问,有利于数据安全和权限控制。
实验四抽象类和接口的使用
(1)熟悉抽象类和接口的概念;
(2)掌握抽象类和接口的定义方法;
(3)掌握抽象类和接口的使用方法。
2.设计一个人员类,其中包含一个方法pay,代表人员的工资支出。
再从人员类派生出助教类、讲师类、副教授类和教授类。
其中:
工资支出=基本工资+授课时数*每课时兼课金
①将人员类定义为抽象类,方法pay为抽象方法,设计程序实现多态性。
②将方法pay定义在接口中,设计程序实现多态性。
Staffstaff=newAssistant();
System.out.println(staff+"
工资支出为:
+staff.pay());
staff=newLecturer();
staff=newAssociateProfessor();
staff=newProfessor();
/**
*人员类
publicabstractclassStaff{
publicabstractintpay();
*助教类
classAssistantextendsStaff{
publicintpay(){
return2000+10*50;
publicStringtoString(){
return"
助教"
;
*讲师类
classLecturerextendsStaff{
return3000+10*80;
讲师"
*副教授
classAssociateProfessorextendsStaff{
return4000+10*100;
副教授"
*教授类
classProfessorextendsStaff{
return5000+10*150;
教授"
抽象类和接口都用于实现多态性,但是抽象类中除了抽象方法,还可以包括成员变量以及一般成员方法;
而接口只能包括公有抽象方法和静态常量。
另外,实现多态性的时候,抽象类用于被继承,且只能单继承;
而接口用于被实现,一个类可以实现多个接口。
实验五异常抛出和捕获
(1)掌握异常的概念、异常的抛出、异常的处理的方法;
(2)学会在程序中用自定义异常处理实际问题;
(3)学会在程序中自己抛出异常和处理异常。
编写一个程序:
完成在银行的存款和取款操作。
在定义银行类时,若取钱数大于余额则作为异常处理。
设计思路:
1.产生异常的条件是余额少于取额,因此是否抛出异常要先判断该条件。
产生异常的方法应该在取钱方法中。
2.处理异常安排在调用取钱方法的时候,因此取钱方法要抛出异常,由上一级调用方法捕获并处理。
3.要定义自己的异常。
编程如下:
Bankbank=newBank();
bank.deposit(100);
try{
bank.withdraw(200);
}catch(NoEnoughMoneyExceptione){
System.out.println("
NoEnoughMoney,"
+e.getMessage());
NoEnoughMoneyException.java
publicclassNoEnoughMoneyExceptionextendsException{
publicNoEnoughMoneyException(finalStringmessage){
super(message);
Bank.java
publicclassBank{
floatmoney=0;
publicvoiddeposit(floatvalue){
money+=value;
publicvoidwithdraw(floatvalue)throwsNoEnoughMoneyException{
if(money<
value){
thrownewNoEnoughMoneyException("
currentmoneyis"
+money);
}else{
money-=value;
publicfloatquery(){
returnmoney;
一个程序难免会遇到异常,Java中可以用throw抛出异常,用try…catch…finaly来处理异常。
而且除了Java定义的异常类,还可以自己定义一些异常类。
实验六JAVA实用包
(1)掌握String类的使用;
(2)掌握StringBuffer类的使用;
(3)掌握StringTokenizer类的使用;
(4)掌握Vector类的使用。
显示一个窗口,在窗口的一个JTextField中输入要进行语言符号化的语句,按回车键后,程序首先将语句转化成大写,然后将语言符号化的结果显示在窗口JTextArea中。
提示:
1.将语句转化成大写可使用String类中的toUpperCase()方法。
2.部分程序段
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassStringTokenizeTestextendsJFrame{
privateJLabelpromptLabel;
privateJTextFieldinputField;
privateJTextAreaoutputArea;
StringTokenizeTest.java
privateJLabelpromptLabel=newJLabel();
privateJTextFieldinputField=newJTextField();
privateJTextAreaoutputArea=newJTextArea();
privateJLabelauthorLabel=newJLabel();
newStringTokenizeTest();
publicStringTokenizeTest(){
setTitle("
StringTokenizeTest"
setBounds(500,300,300,220);
setDefaultCloseOperation(EXIT_ON_CLOSE);
init();
setVisible(true);
privatevoidinit(){
setLayout(null);
promptLabel.setText("
输入:
promptLabel.setBounds(10,10,50,30);
authorLabel.setText("
by1040501211陈嘉生"
authorLabel.setBounds(10,150,200,30);
inputField.setBounds(70,10,200,30);
inputField.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
stringTokenize();
});
outputArea.setBounds(10,50,280,100);
add(promptLabel);
add(input