Java實驗報告彙總

life4711發表於2014-11-25

實驗四

1、1)宣告一個類Person,該類擁有:

①成員變數name(protected,String);//用於存放姓名;age(protected,int);//用於存放年齡;address(protected,String);//用於存放家庭地址

② 兩個構造方法

無參構造方法()//預設將姓名設定為“張三”;

有參構造方法(Stringname,int age,String addr)//建立Person物件時設定姓名、年齡和地址;

2)宣告一個類Student,它繼承了上面的Person類。還擁有:

①一個成員變數department(私有,String)//用於存放所在系

②兩個構造方法

無參構造方法()//先呼叫父類構造方法,並把所在系的預設設為“資訊系”;

有參構造方法(Stringname,int age,String addr ,String dep)//先呼叫父類的構造方法,然後再設定所在系

3)編寫類Test作為主類完成如下測試。

編寫應用程式,以自己個人資訊作為引數分別建立Person類和Student類的例項物件,並在主方法main中編寫程式碼輸出個人資訊。

 

2 編寫一個類,該類有如下一個方法:public int f(int a ,int b){     

…………………………………..//要求該方法返回a和b的最大公約數

}

再編寫一個該類的子類,要求子類重寫方法發(),而且重寫的方法返回兩個整數的最小公倍數。

3.

1)定義一個圖形類Shape,定義兩個方法分別用來求面積和周長。(這兩個方法的體內容應該為空)

2)定義圖形類Shape的子類Rectangular類重寫求面積及周長的功能

3)定義圖形類Shape的子類Circle類重寫求面積及周長的功能

編寫應用程式,通過上轉型物件呼叫被重寫的方法。

class Person{
	protected String name;
	protected int age;
	protected String address;
	Person(){
		name="張三";
	}
	Person (String a,int b,String addr){
		name=a;
		age=b;
		address=addr;
	}
}
class  Student extends Person{
		private String department;
		Student(){
			department="資訊系";			
		}
		Student(String name,int age,String addr,String dep){
			super(name,age, addr);
			department=dep;
		}
		void x(){
			System.out.println(department);
		}
}
public class Main {
public static void main(String args[]){
	Person people1=new Person("呂",18,"汶上");
	Student people2=new Student("小明",18,"哈爾濱","資訊2系");
	System.out.println(people1.name+people1.age+people1.address);
	System.out.println(people2.name+people2.age+people2.address);
	people2.x();
}
}
import java.text.NumberFormat;
class Person{
	public int f(int a,int b){
	     if(a==0)
	    	 return b;
	     return f(a%b,a);
	}
}
class A extends Person{
	public int f1(int a,int b){
		if(a==0)
			return b;
		return f1(a%b,a);
	}
	public int f(int a,int b){
		return a*b/f1(a,b);
	}
	
}
public class Main {
public static void main(String args[]){
	Person a=new Person();
	A b=new A();
	System.out.println(a.f(3,6)+" "+b.f(3,6));
}
}

import java.text.NumberFormat;
class Shape{
	void area(){
		
	}
	void length(){
		
	}
}
class Rectangular extends Shape{
	 void area(){
		 System.out.println("長方形的面積");
	 }
	 void length(){
		 System.out.println("長方形的周長");
	 }
}
class Circle extends Shape{
     void  area(){
	 System.out.println("圓的面積");
	 }
	 void length(){
		 System.out.println("圓的周長");
	 }
}
public class Main {
public static void main(String args[]){
	Shape a;
	Rectangular b=new Rectangular();
	Circle c=new Circle();
	a=b;
	a.area();
	a.length();
	a=c;
	a.area();
	a.length();
}
}
實驗5

1.設計一個抽象類,宣告有關算術運算的方法,並建立四個子類繼承該抽象的類,完成進行加、減、乘、除四則運算。要求:在應用程式的主類中使用這些子類建立物件,再讓他們的上轉型物件呼叫算術運算方法。

2.編寫一個ComputerAverage抽象類,類中有一個抽象方法求平均分average,可以有引數。定義Gymnastics類和School類,它們都是ComputerAverage的子類,Gymnastics類中計算選手的平均成績的方法是去掉一個最低分,去掉一個最高分,然後求平均分。School中計算平均分的方法是直接是總分除以總科目。

要求:定義ComputerAverage的物件為上轉型物件,並呼叫重寫的方法averge。

3.將1或2中完成的功能使用介面回撥重新實現。

4.編寫一個類,完成功能為通過scanner物件獲得從鍵盤輸入的值,如int,但實際從鍵盤輸入非int值,如float,觸發異常,並在catch中處理此異常,如輸出異常的資訊。(e.getMessage())

abstract class A{
	abstract double op(int a,int b);
}

class B extends A{
	double op(int a, int b) {
		return a+b;
	}	
}
class C extends A{

	double  op(int a, int b) {
		
		return a-b;
	}
}
class D extends A{
	double  op(int a, int b) {
		return a*b;
	}
}
class E extends A{
	double  op(int a, int b) {
		return a*1.0/b;
	}
}

public class Main {
     public static void main(String args[]){
	 B b=new B();
	 C c=new C();
	 D d=new D();
	 E e=new E();
	 System.out.println(b.op(3,4)+" "+c.op(3,4)+" "+d.op(3,4)+" "+e.op(3,4));
     }
}

interface A{
	double op(int a,int b);
}

class B implements A{
	public double op(int a, int b) {
		return a+b;
	}	
}
class C implements A{
	public double op(int a, int b) {
		return a-b;
	}
}
class D implements A{
	public double op(int a, int b) {
		return a*b;
	}
}
class E implements A{
	public double  op(int a, int b) {
		return a*1.0/b;
	}
}

public class Main {
     public static void main(String args[]){
	 A sm;
	 sm=new B();
	 System.out.println(sm.op(3,4));
	 sm=new C();
	 System.out.println(sm.op(3,4));
	 sm=new D();
	 System.out.println(sm.op(3,4));
	 sm=new E();
	 System.out.println(sm.op(3,4));
     }
}


import java.util.*;
public class Main {
     public static void main(String args[]){
    	 Scanner reader=new Scanner(System.in);
    	 int n;
    	 try{
    		 n=reader.nextInt();
    	 }
    	 catch(Exception e){
    		 System.out.println("發生異常");
    	 }
     }
}

實驗6

實驗內容(1.2中任選一個,3.4.5中任選一個,6必做)
1.編寫一個程式,實現字串的大小寫轉換並倒序輸出,如輸入為“HelloWord”,輸出為“DROwOLLEH”。要求如下:不能使用StringBudder類的reverse()方法實現。

程式設計思路:將字串放入字元陣列中,從最後一個字元開始遍歷,通過方法判斷如是小寫字元則轉換為大寫,反之轉換為小寫;定義一個StringBuffer物件,呼叫方法將數字中轉換後的字元放入,用toString()方法輸出。

注:String的toLowerCase()方法,可將大寫字元轉換為小寫,toUpperCase()方法可將小寫轉換為大寫。其餘方法書上參考或查API幫助。

2.編寫一個應用程式,使用者從鍵盤輸入一行含有數字和字元的字串,程式僅僅輸出字串中的全部數字字元。

3.編寫一個應用程式,計算從今天起,100天后是幾月幾號,並使用SimpleDateFormat類,按你設定的格式顯示某面某月某日,星期幾。

注:可用Calendar類的Add()方法計算100天后的日期。

4編寫一個應用程式,輸出某年某月的日曆。

5.編寫一個應用程式,使用BigInteger類實現計算大整數的階乘。

6.自己編寫一個泛型的例子。

import java.util.*;
public class Main {
     public static void main(String args[]){
    	 Scanner reader=new Scanner(System.in);
    	 String a;
    	 int i;
    	 a=reader.next();
    	 char[] ch=a.toCharArray();
    	 for(i=0;i<ch.length;i++)
    		   if(ch[i]>='0'&&ch[i]<='9')
    			   System.out.printf("%c",ch[i]);
    	  System.out.printf("\n");
    	 
     }
}
import java.math.*;
public class Main {
     public static void main(String args[]){
    	 BigInteger n=new BigInteger("5");
    	 BigInteger mul=new BigInteger("1");
    	 BigInteger one=new BigInteger("1");
    	 for(BigInteger i=n;i.compareTo(one)>=0;i=i.subtract(one)){
    		 mul=mul.multiply(i);
    	 }
    	  System.out.println(mul);
    	 
     }
}

import java.util.ArrayList;
import java.util.List;
public class Main {

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("1234567");
        list.add("89101112");
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i);
            System.out.println("name:" + name);
        }
    }
}

實驗7

二、實驗內容(1.2.3.4中任選一個,5.6任選一個)
1.使用TreeSet類,編寫一個應用程式,輸入5個學生的姓名和數學分數、英語分數。程式分別按英語、數學和總分排序輸出學生的姓名和分數。

2.使用LinkList類,編寫一個應用程式,用一個二維陣列模擬4*4方針,然後將整數1~8隨機放入方陣中,要求1~8中的每個數在方陣中恰好出現2次。

提示:首先將1~8新增到連結串列中,使得連結串列的長度為16,前8個是1~8,後8個也是1~8,然後隨機刪除連結串列中的節點,同時將該結點中的資料順序的放入方陣中。

3.有集合A={1,2,3,4},和B={1,3,7,9,11},編寫一個應用程式輸出A和B交集、並集和差集。

4.有5個硬碟,有兩個重要的屬性:價格和容量。使用TreeMap類編寫一個應用程式,分別按照價格和容量排序輸出10個硬碟的詳細資訊。

5. 編寫一個java程式,在主執行緒中在建立2個執行緒,一個執行緒輸出“我是執行緒A”10次, 一個執行緒輸出“我是執行緒B”10次,多次執行此程式,觀察結果是否一樣。

6. 哈爾濱火車站下面有三個火車票代售點,假如哈爾濱到北京的火車票總共是200張,如何用程式來實現三個售票點同時賣票的功能。

import java.util.*;
class Student implements Comparable{
	int english=0;
	int math=0;
	int sum=0;
	String name;
	Student(int e,int m,String n){
		english=e;
		name=n;
		math=m;
		sum=m+e;
	}
	public int compareTo(Object b) {
		Student st=(Student)b;
		//return (this.english-st.english);//按英語排序
		//return (this.math-st.math);//按數學排序
		return (this.sum-st.sum);//按總分排序
	}
}
public class Main{
	public static void main(String args[]){
		TreeSet<Student>mytree=new TreeSet<Student>();
		Student st1,st2,st3;
		st1=new Student(90,80,"張");
		st2=new Student(70,85,"呂");
		st3=new Student(20,95,"劉");
		mytree.add(st1);
		mytree.add(st2);
		mytree.add(st3);
		Iterator <Student>te=mytree.iterator();
		while(te.hasNext()){
			Student stu=te.next();
			System.out.println(" "+stu.name+"  "+" "+stu.english+" "+" "+stu.math+" "+" "+stu.sum);
		}
	}
}
class WriteWordThread extends Thread{
	WriteWordThread(String s){
		setName(s);
	}
	public void run(){
		for(int i=1;i<=10;i++){
			System.out.println(" "+getName());
		}
	}
}
public class Main{
	public static void main(String args[]){
		WriteWordThread zhang,wang;
		zhang=new WriteWordThread("我是執行緒A");
		wang=new WriteWordThread("我是執行緒B");
		zhang.start();
		wang.start();
	}
}

實驗8

二、實驗內容(1.2.3任選一個,4.5.6任選一個)
1.在某目錄下建立一個文字檔案test.txt,通過位元組輸出流向檔案中寫入“Beijing歡迎你!”,通過位元組輸入流讀出檔案中的內容並顯示;如果再已有檔案中再追加“我的學號是:你自己的學號”如何實現?

2.檔案的拷貝的實現原理通常是通過輸入流來讀取檔案中的資料,通過輸出流將資料寫入檔案。通過編寫一段程式來文成檔案拷貝的工作。首先在當前目錄下建立資料夾source和target,然後在source資料夾中存放“High.mp3”,使用位元組輸入流讀入檔案,使用位元組輸出流寫入資料夾target下。(試試你拷貝的檔案是否好使)

3.將字串加密後,通過字元輸出流寫入檔案,然後讀取該檔案,並解密。

4.程式設計包含一個文字框和一個文字區域,文字框內容改變時,將文字框中的內容顯示在文字區域中;在文字框中按Enter鍵時,清空文字區域的內容。
5.編寫一個算術測試小軟體,用來訓練小學生的算術能力。程式由3個類組成:teacher類的物件充當監視器,負責給出算術題目,並判斷回答者的答案是否正確;ComputerFrame類的物件負責為算術題目提供檢視,如使用者提供ComputerFrame類的物件提供GUI介面看到題目,並通過該GUI介面給出題目的答案;MailClass類是軟體的主類。

6.編寫一個簡單的計算器,要求能實現簡單的加、減、乘、除四則運算和置零的功能。


import java.io.*;
public class Main{
	public static void main(String args[]){
		File file=new File("E:/","hello.txt");
		byte b[]="Beijing 歡迎你!".getBytes();
		try{
			FileOutputStream out=new FileOutputStream(file);
			out.write(b);
			out.close();
			FileInputStream in=new FileInputStream(file);
			int n=0;
			while((n=in.read(b,0,2))!=-1){
				String str=new String(b,0,n);
				System.out.println(str);
			}
			FileWriter writer = new FileWriter("E:/hello.txt", true);  
		      writer.write("我的學號是:你自己的學號");  
		      writer.close();
		    n=0;
		    while((n=in.read(b,0,2))!=-1){
				String str=new String(b,0,n);
				System.out.println(str);
			}
		}
		catch(IOException e){
			System.out.println(e);
		}
		
	}
}



相關文章