当前位置:文档之家› JAVA实验报告(全面)

JAVA实验报告(全面)

JAVA实验报告(全面)
JAVA实验报告(全面)

专业:计算机科学与技术班级:

学号:姓名:书剑

实验一、Java语言基础

实验目的

1、掌握Java基本数据类型、操作符。

2、熟练掌握while或do-while或for循环语句使用方法。

3、了解Java程序的运行机制。

4、熟悉java开发软件环境netbeans或eclipse的使用方法。实验题目:

1.

2.

程序设计思想

1、将整个棱形分为上下两部分,分别用两个嵌套的for循环实现这两部分星星的打印输出。

2、根据公式的特性设置变量j来控制每一项的正负,再用for循环来实现整个公式的计算求和。

实验源代码:

1.public class Nsj {

public static void main(String[] args) {

for (int i=1;i<=5;i++)

{

for (int j=5;j>=i;j--)

System.out.print (" ");

for (int k=1;k<=2*i-1;k++)

System.out.print("*");

System.out.print("\n");

}

for(int m=4;m>=0;m--)

{

for(int p=5;p>=m;p--)

System.out.print(" ");

for(int n=1;n<=2*m-1;n++)

System.out.print("*");

System.out.print("\n");

}

}

}

2. public class Pai {

public double cal(int n){

double result=4;

for(int i=1;i<=n;i++){

int a=(int)(Math.pow(-1, (int)i)*(i*2+1));

result=result+4/(double)a;

}

return result;

}

public static void main(String[] args) {

// TODO code application logic here

Pai pai=new Pai();

double pi=pai.cal(1000000);

System.out.println(pi);

}

}

测试与运行

1.

2.

1.在调试程序的过程中遇到菱形前面的空格显示不出来,原来是多出了一个“;”。

实验小结

1.了解JAVA的运用基础,懂得实质性的变通,利用函数来实现程序

2.注意编写代码时候的细节问题,认真对待

3.通过本次试验学会了如何配置环境变量,了解Java的运行环境及Java的运行过程。

4.掌握了Java基本数据类型、操作符的运用,熟练掌握了while或do-while 或for循环语句使用方法,进一步了解了Java程序的运行机制,熟悉了java 开发软件netbeans的使用方法。

实验二、Java面向对象

实验目的

1、了解使用if—else,break语句实现循环。

2、熟练掌握一位数组和二维数组的概念、定义和使用。

3、掌握接口的特点、结构和调用。

4、掌握线性表的顺序和链式存储结构。

实验题目:

实现线性表

? 1. 定义一个接口,统一线性表的操作

? 2. 用顺序表的实现该接口

? 3.用链表实现该接口

? 4.定义Iterator接口,在顺序表和链表中分别实现Iterator接口,实现对线性表的遍历。

? 5.增加泛型的实现

? 6.自定义异常类处理异常

程序设计思想

1.创建一个包,然后分别建立LinkedList,SeqList,然后重载写入来分段完成实验源代码:

1.Iterator.java

package Iterator;

public interface Iterator {

public void Insert(int i,E x);

public E Delete(int i);

public E Get(int n);

public void Update(int i,E x);

public void MakeEmpty();

public void Print();}

* LinkedList.java

package Iterator;

import java.util.Scanner;

class Node{

E data;

Node next;}

public class LinkedList implements Iterator { Node head=new Node();

public LinkedList(E[] a, int n){

Node pNode=head;

for(int i=0;i

Node sNode = new Node();

sNode.data=a[i];

sNode.next=pNode.next;

pNode.next=sNode;

pNode=sNode;

}

pNode.next=null;}

@Override

public void Insert(int i,E x){

Node p=head;

int j = 0;

while(p!=null && j

p=p.next;

j++;}

if(p==null)

System.out.print("failed");

else{

Node r=new Node();

r.data=x;

r.next=p.next ;

p.next=r;

}

}

@Override

public E Delete(int i){

Node p=head;

for(int j=0;j

p=p.next;

E x=p.next.data;

p.next=p.next.next;

return x;}

@Override

public E Get(int n){

int j=0;

Node p=head;

while(p!=null && j!=n){

p=p.next;

j++;

}

if(p==null){

System.out.print("Error");

return null;

}

else

return p.data;

}

@Override

public void Update(int i,E x){

Node p=head;

int j=0;

while(p!=null && j

p=p.next;

j++;

}

if(p==null){

System.out.print("Failed");} else{

p.next.data=x;

}

}

@Override

public void MakeEmpty(){

head.next=null;

}

@Override

public void Print(){

Node p=head.next;

while(p!=null){

System.out.print(p.data+" ");

p=p.next;

}

}

public static void main(String args[]){

Integer[] a={1,2,3,4,5,6};

LinkedList b=new LinkedList(a,6);

System.out.print("原数组:");

b.Print();

System.out.println();

while(true){

System.out.print("请输入数字(1添加,2删除,3修改;4查找,5置空,6改后数组):");

Scanner q=new Scanner(System.in);

int i=q.nextInt();

switch(i){

case 1:

System.out.print("第i1个地方,i1=");

Scanner q1=new Scanner(System.in);

int i1=q1.nextInt();

System.out.print("添加的数n1,n1=");

int n1=q1.nextInt();

System.out.print("第"+i1+"个地方添加个数"+n1+",后数组为:");

b.Insert(i1, n1);

b.Print();

System.out.println();

break;

case 2:

System.out.print("第i2个地方,i2=");

Scanner q2=new Scanner(System.in);

int i2=q2.nextInt();

System.out.print("删除第"+i2+"个数,后数组为:");

b.Delete(i2);

b.Print();

System.out.println();

break;

case 3:

System.out.print("第i3个地方,i3=");

Scanner q3=new Scanner(System.in);

int i3=q3.nextInt();

System.out.print("修改的数n3,n3=");

int n3=q3.nextInt();

System.out.print("把第"+i3+"个数改为"+n3+",后数组为:");

b.Update(i3, n3);

b.Print();

System.out.println();

break;

case 4:

System.out.print("第i4个地方,i4=");

Scanner q4=new Scanner(System.in);

int i4=q4.nextInt();

System.out.print("查找第"+i4+"个数为:");

b.Get(i4);

System.out.println(b.Get(i4));

break;

case 5:

System.out.print("MakeEmpty");

b.MakeEmpty();

b.Print();

System.out.println();

break;

case 6:

b.Print();

System.out.println();

break;

}

}

}

}

* SeqList.java

package Iterator;

import java.util.Scanner;

public class SeqList implements Iterator{ private E[] a=(E[]) new Object[100];

private int length;

public SeqList(E[] b,int n){

System.arraycopy(b, 0, a, 0, n);

length=n;}

@Override

public void Insert(int i,E x){

if(i<=length+1 && i>0){

for(int j=length;j>i-1;j--)

a[j]=a[j-1];

a[i-1]=x;

length++;

}else {

System.out.print(":错误,无法添加到此位置!!!");}} @Override

public E Delete(int p){

if(p<=length && p>0){

E t=a[p-1];

for(int i=p-1;i

a[i]=a[i+1];

length--;

return t;

}else {

System.out.print(":错误,此位置不存在数,无法删除!!!");

}

return null;}

@Override

public E Get(int n){

if(n=0){

System.out.println(a[n-1]);

return a[n-1];

}else

System.out.println("错误,此位置不存在数,无法查到!!!");

return null;

}

@Override

public void Update(int i,E x){

if(i<=length && i>0)

a[i-1]=x;

else

System.out.print(":错误,此位置不存在数,无法修改!!!");

}

@Override

public void MakeEmpty(){

length=0;

}

@Override

public void Print(){

if(length>0){

for(int i=0;i

System.out.print(a[i]+" ");

}else

System.out.print("数组为空!!!");

}

public static void main(String args[]){

Integer[] a={1,2,3,4,5,6};

SeqList b=new SeqList(a,6);

System.out.print("原数组:");

b.Print();

System.out.println();

while(true){

System.out.print("请输入数字(1添加,2删除,3修改;4查找,5置空,6改后数组):");

Scanner q=new Scanner(System.in);

int i=q.nextInt();

switch(i){

case 1:

System.out.print("第i1个地方,i1=");

Scanner q1=new Scanner(System.in);

int i1=q1.nextInt();

System.out.print("添加的数n1,n1=");

int n1=q1.nextInt();

System.out.print("第"+i1+"个地方添加个数"+n1);

b.Insert(i1, n1);

System.out.println();

break;

case 2:

System.out.print("第i2个地方,i2=");

Scanner q2=new Scanner(System.in);

int i2=q2.nextInt();

System.out.print("删除第"+i2+"个数");

b.Delete(i2);

System.out.println();

break;

case 3:

System.out.print("第i3个地方,i3=");

Scanner q3=new Scanner(System.in);

int i3=q3.nextInt();

System.out.print("修改的数n3,n3=");

int n3=q3.nextInt();

System.out.print("把第"+i3+"个数改为"+n3);

b.Update(i3, n3);;

System.out.println();

break;

case 4:

System.out.print("第i4个地方,i4=");

Scanner q4=new Scanner(System.in);

int i4=q4.nextInt();

System.out.print("查找第"+i4+"个数为:");

b.Get(i4);

break;

case 5:

System.out.print("MakeEmpty");

b.MakeEmpty();

System.out.println();

break;

case 6:

b.Print();

System.out.println();

break;

}

}

}

}

实验结果:

实验小结:

1.定义Iterator接口,在LinkedList,SeqList两种表中分别实现Iterator 接口,实现对线性表的遍历,实验时必须要分清这2种表各自的特点,注意细节。

2.在这个程序当中出现了很多的@Override,其实@Override是伪代码,表示覆

盖重写(不写也可以),写了也有好处,比如说:方便阅读当注释一样;他也是父类继承过来的,也可以验证父类的东西。

3.熟悉顺序表和链表的的使用,掌握对数组的各项功能。

注意:第一个数据元素节点前插入和删除第一个元素节点时的情况,区分线性表和链表。删除链表的第一个结点是一种特殊情形,删除最后一个结点则不是。插入或删除链表中的第一个结点,需要遍历整个链表。维护一个指向最后一个结点的表尾引用,可以使在链表末端插入结点,而不需要遍历,但是,表尾引用或删除最后一个结点变的稍微困难一些。

实验三、java集合框架

实验题目

1.用Collection中List实现一个简单的学生信息管理系统。学生信息有:学号、姓名、年龄、三门课成绩等。在其上实现增删改查的操作。

2.用Map 实现电话簿管理程序。根据姓名查询电话号码

实验源代码:

1.

package collections;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Collections {

private static List data;

public static void main(String[] args) {

init();

Scanner in = new Scanner(System.in);

while (true) {

System.out.print("学生列表 1 ");

System.out.print("查找列表 2 ");

System.out.print("添加学生 3 ");

System.out.print("删除学生 4 ");

相关主题
文本预览
相关文档 最新文档