专业:计算机科学与技术班级:
学号:姓名:书剑
实验一、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
public class LinkedList
public LinkedList(E[] a, int n){
Node
for(int i=0;i 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 int j = 0; while(p!=null && j p=p.next; j++;} if(p==null) System.out.print("failed"); else{ Node r.data=x; r.next=p.next ; p.next=r; } } @Override public E Delete(int i){ Node 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 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 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 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 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 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 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 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 ");