太原理工大學java實驗_第1頁
太原理工大學java實驗_第2頁
太原理工大學java實驗_第3頁
太原理工大學java實驗_第4頁
太原理工大學java實驗_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本科實驗報告課程名稱: JAVA語言程序設計 實驗項目: 基礎編程 實驗地點: 軟件樓 專業(yè)班級: 軟件 班 學號: 學生姓名: 指導教師: 2014年1月5日實驗1 Java語言基礎1.實驗目的(1) 通過實驗,掌握Java語言程序設計的基本方法。(2) 學會Java語言中標示符的命名、運算符和表達式的應用。(3) 熟練地掌握Java程序流程控制語句的應用。2.主要儀器設備筆記本電腦HP6460b,win7,eclipse3.實驗內容(1) 編寫應用程序,計算100(含100)以內所有偶數(shù)的和。package com.test11;public class Test11 /計算100以內所有

2、偶數(shù)的和public static void main(String args)int sum = 0;for(int i=2; i<=100; i+=2)sum += i;System.out.println("100(包括100)以內所有的偶數(shù)之和sum="+sum);運行結果:(2) “水仙花數(shù)”是指一個3位數(shù),其個位、十位、百位上的數(shù)字的立方和等于該數(shù)本身,例如371=33+73+13,因此371是一個水仙花數(shù)。編寫程序,求所有的水仙花數(shù)。package com.test12;public class Test12 public static void mai

3、n(String args)System.out.println("所有3位數(shù)中的水仙花數(shù)為:");for(int i=100;i<1000;i+) int a = i/100; int b = i/10%10; int c = i%100%10; if(a*a*a + b*b*b + c*c*c = i) System.out.println(i);運行結果:(3) 編寫一個程序,求1-100間的素數(shù)。package com.test13;public class Test13 public static void main(String args)boolean

4、f; System.out.println("1100之間的素數(shù)是:"); for(int i = 2; i <= 100; i+) f = true; for(int j = 2; j < i; j+) if(i % j = 0) f = false; break; if(f) System.out.print(i + " "); 運行結果:(4) 有一函數(shù): x (x<1)Y= 3x-2 (1x<10) 4x (x10) 寫一程序,給定x值,輸出y值。package com.test14;import java.util.Sc

5、anner;public class Test14 public static void main(String arges)System.out.print("請輸入一個x的值:");Scanner in = new Scanner(System.in);Double Y,x=in.nextDouble();if(x < 1)System.out.println("Y="+x);else if(x >= 10)Y=4 * x;System.out.println("Y="+Y);else Y = 3*x-2;System

6、.out.println("Y="+Y);運行結果: (5) 使用for循環(huán)語句,編寫程序輸出以下圖案。package addsum;public class question5 public static void main(String args) for(int r=1; r<=4; r+) for (int space=4-r; space>0; space-) System.out.print(""+" "+""); for(int star=1; star<=2*r-1; star+)

7、 System.out.print(''); System.out.print('n'); for(int r=3; r>=1; r-) for(int space=4-r; space>0; space-) System.out.print(""+" "+""); for(int star=1; star<=2*r-1; star+) System.out.print(''); System.out.print('n'); 運行結果:(6) 編寫程序,

8、輸出從公元1900年到2100年所有閏年的年號,每輸出5個年號換一行。判斷年是否為閏年的條件是: 若年號可以被4整除,而不能被100整除,則是閏年; 若年號可以被400整除,也是閏年。package com.test15;public class Test16 public static void main(String args)for(int i=1900;i<=2010;i+)int n = 0;if(i%4=0)&&(i%100!=0)|(i%400=0)n+;System.out.println(i+"是閏年"); if(n%5=0) Sys

9、tem.out.println("n"); 運行結果:4.討論、心得 試驗中遇到的問題及體會 在實驗過程中,整體都比較完整,基本沒遇到什么太大調試問題,算法設計也比較清楚,結果相對比較滿意。 體會:經(jīng)過實驗使我對本章的知識有了更深一步的理解,也學會了將C語言運用到java語言中的學習方法,對知識做了進一步的鞏固,同時也發(fā)現(xiàn)各種語言之間總有相同的模塊,這也使我對以后各程序設計語言及各專業(yè)課的學習奠定基礎,創(chuàng)造了條件實驗2 數(shù)組和字符串編程1.實驗目的(1) 通過實驗,掌握Java語言中數(shù)組、字符串程序設計的基本方法。(2) 較熟練地掌握Java程序數(shù)組的應用、字符串處理操作的

10、方法應用。2.實驗內容(1) 編寫一個程序,在控制臺輸入10個數(shù),按大小順序輸出。package com.testTwo;import java.util.Scanner;public class TestTwo0 public static void main(String args)int x=new int10; System.out.print("請輸入十個整數(shù):"); Scanner sc=new Scanner(System.in); for(int i=0;i<10;i+) xi=sc.nextInt(); sort(x);public static v

11、oid sort(int x) / TODO Auto-generated method stub int temp; for (int i = 0; i < 10; i+) for (int j = i + 1; j < 10; j+) if (xi < xj) temp = xi; xi = xj; xj = temp; for (int i = 0; i < 10; i+) System.out.print(xi + ",");運行結果:(2) 求一個3*3矩陣對角線元素之和。package com.testTwo;public class T

12、estTwo2 public static void main(String args) int nums=1,2,3,4,5,6,7,8,9; int sum = 0; for(int i=0;i<3;i+) for(int j=0;j<3;j+) if(i=j|i+j=2) sum+=numsij; System.out.println("3*3矩陣對角線元素之和sum="+sum); 運行結果:(3) 輸入一段字符串,統(tǒng)計其中有多少個單詞。(單詞用空格隔開)package com.testTwo;import java.io.BufferedReader;

13、import java.io.IOException;import java.io.InputStreamReader;public class TestTwo3 public static void main(String args) throws IOExceptionint num=1;String s;System.out.print("請輸入一段字符串:n");BufferedReader buf = new BufferedReader(new InputStreamReader(System.in);s = buf.readLine();for (int i=

14、0;i<s.length();i+)if(s.charAt(i) = ' ')num+;System.out.println("該字符串有"+num+"個單詞");運行結果:3.討論、心得 通過實驗,掌握Java語言中數(shù)組、字符串程序設計的基本方法,較熟練地掌握Java程序數(shù)組的應用、字符串處理操作的方法應用,學到了很多知識,加深了對書本上知識的理解。實驗3 Java面向對象程序設計1.實驗目的掌握Java面向對象程序設計中類、繼承、包和接口的概念與應用,能熟練應用方法、類、成員變量等元素。2.實驗內容(1) 創(chuàng)建一個復數(shù)類comp

15、lex,以復數(shù)進行數(shù)學運算、復數(shù)具有如下格式:RealPart+ImaginaryPart*I ,其中,I為-1的平方根。 要求如下:1 利用浮點變量表示此類的私有數(shù)據(jù)。提供兩個構造方法,一個用于此類聲明的對象的初始化;一個為默認的無參構造方法。2 提供兩復數(shù)加、減、乘的運算方法。3 按格式(a,b)打印復數(shù)。其中a為實部,b為虛部。package shiyan3;import java.util.Scanner;public class question1 public static void main(String args) Complex a=new Complex(3,5);Comp

16、lex b=new Complex(7,2);System.out.println(a.toString()+"和"+b.toString()+"相加的結果為"+plexAdd(b).toString();System.out.println(a.toString()+"差"+b.toString()+"相減的結果為"+plexJian(b).toString(); class Complex int realPart; int imaginPart; public Complex()realPart=0;imag

17、inPart=0; public Complex(int r,int i)realPart=r;imaginPart=i; public Complex complexAdd(Complex b)return new Complex(realPart+b.realPart,imaginPart+b.imaginPart ); public Complex complexJian(Complex b) Return new Complex(realPart-b.realPart,imaginPart-b.imaginPart ); public String toString()String s

18、r= "("+realPart + "," +imaginPart + ")" return sr;結果: (2) 創(chuàng)建銀行賬號Account類,實現(xiàn)存款(balance)的存(deposit)、取(withdraw)和查詢(getbalance)等功能。2.package shiyan3;import java.util.Scanner;public class question2 public static void main(String args) double balance = 0;double deposit = 0;d

19、ouble withdraw = 0;for (;) System.out.println("請輸入數(shù)字:t1.存錢 t2.取錢t3.查詢余額n");Scanner input = new Scanner(System.in);String num = input.next();double s1 = 0, s2= 0 ;if (num.equals("1") System.out.println("輸入存入金額:");deposit = input.nextDouble();System.out.println("存錢數(shù)目

20、為:" + deposit);s1 += deposit; if (num.equals("2") System.out.println("輸入取錢金額:");withdraw = input.nextDouble();System.out.println("取走金額為:" + withdraw);s2 += withdraw; if (true | num.equals("3") balance += s1 - s2;System.out.println("賬戶余額為:" + bal

21、ance); 結果:(3) 編程定義一個接口,實現(xiàn)三個數(shù)中求最小值和最大值的方法,并將程序存放在mymaths包中。3.package shiyan3;public class question3 public Integer maxNum(int a, int b) if(a>b)return a;else return b;public Integer minNum(int a, int b) if(a>b)return b;else return a;public static void main(String args)int a=6,b=2,c=10;question3

22、s=new question3();int temp=s.maxNum(a, b);int temp1=s.maxNum(temp, c);System.out.println("The MaxNum is"+temp1);int temp2=s.minNum(a, b);int temp3=s.minNum(temp2, c);System.out.println("The MinNum is"+temp3); 結果:(4) 編程實現(xiàn)以下簡單超市管理,具體要求如下:1 實現(xiàn)描述超市的類Suppermacket類,具有貨架屬性,記錄系統(tǒng)中現(xiàn)有商品,定義盤

23、點商品的函數(shù)check(盤點各類商品的數(shù)量,并輸出盤點結果),查詢商品的函數(shù)query,并顯示查詢結果;2 定義商品類Goods,具有商品名稱Name,商品價格Price,商品產地Producer等屬性,操作Sale(銷售商品,余額不足時給予提示)、Add(商品上架操作)和ShowMe(顯示商品信息)。3 main函數(shù),測試以上所要求的各種功能,即可以根據(jù)菜單命令增加、刪除、查詢商品、盤點商品,以及商品銷售和商品上架的操作提示: 超市貨架可以使用商品數(shù)組,數(shù)組大小100表明存放100個商品。 注意實現(xiàn)商品查詢的多態(tài)性,要求可以根據(jù)商品的名稱或產地或價格查詢商品的數(shù)量。import java.i

24、o.*;import java.util.Scanner;public class Main static String name;static float price;static int num;static String producer;static Supermarkt market=new Supermarkt();public static void main(String args)throws IOExceptionint i=0;while(true)market.ShowMenu();i=Integer.parseInt(Getline();switch(i)case 1

25、: Add();break;case 2: Del();break;case 3: Showgoods();break;case 4: Query();break;case 5: System.out.print("成功退出系統(tǒng)");return;default:System.out.println("輸入錯誤,請重新輸入!");break;public static void Query() System.out.println("*查詢商品*");System.out.print("商品名:");name=Ge

26、tline();if(!market.Query(name)System.out.print("沒有該商品");public static void Showgoods() System.out.println("*顯示所有商品*");if(!market.Showgoods()System.out.println("沒有任何商品");public static void Del() System.out.println("*刪除商品*");System.out.print("商品名稱:");n

27、ame=Getline();if(market.Del(name)System.out.println("刪除商品->" + name + " 成功!");elseSystem.out.println("該商品不存在");public static void Add() System.out.println("*增加商品*");System.out.print("商品名稱:");name=Getline();System.out.print("商品價格:");price

28、=Float.parseFloat(Getline();System.out.print("商品數(shù)量:");num=Integer.parseInt(Getline();System.out.print("商品產地:");producer=Getline();if (market.Add(name, price, num,producer) System.out.println("增加商品->" + name + " 成功!"); else System.out.println("存在相同商品,增加

29、失敗!");public static String Getline() Scanner scan = new Scanner(System.in);String str = scan.nextLine();return str.trim();Goodspublic class Goods private String name;private float price;private int num;private String producer;public Goods(String name,float price,int num,String producer)this.nam

30、e=name;this.price=price;this.num=num;ducer=producer;public String GetName()return ;public float GetPrice()return this.price;public int GetNum()return num;public String GetProducer()return ducer;public void Showgoods()System.out.print("商品名稱: "+name+" 商品價格:"

31、;+price+" 商品數(shù)量:"+num+" 商品產地:"+producer+"n");Supermarketimport java.util.Vector;public class Supermarkt static Vector<Goods> listgoods=new Vector<Goods>();public void ShowMenu() System.out.println("-");System.out.println("1.增加商品 ");System.

32、out.println("2.刪除商品");System.out.println("3.顯示商品 ");System.out.println("4.查詢商品 ");System.out.println("5.退出系統(tǒng) ");System.out.println("-");return;/增加商品public boolean Add(String name,float price, int num,String producer)int count=listgoods.size();for(int

33、 i=0;i<count;i+)if(listgoods.get(i).GetName().equals(name)return false;Goods newgoods =new Goods(name,price,num,producer);listgoods.add(newgoods);return true;/刪除商品public boolean Del(String name)int count=listgoods.size();for(int i=0;i<count;i+)if(listgoods.get(i).GetName().equals(name)listgood

34、s.remove(i);return true;return false;/顯示商品public boolean Showgoods()int count=listgoods.size();if(count=0)return false;else for(int i=0;i<count;i+)listgoods.get(i).Showgoods();return true;/查詢商品public boolean Query(String name)int count=listgoods.size();for(int i=0;i<count;i+)if(listgoods.get(i

35、).GetName().equals(name)listgoods.get(i).Showgoods();return true;return false;結果:3.討論、心得 通過實驗,我掌握Java面向對象程序設計中類、繼承、包和接口的概念與應用,能熟練應用方法、類、成員變量等元素,在實驗過程中的確遇到過很多問題,不像前幾章那樣較容易實現(xiàn)各功能,我發(fā)現(xiàn)自己在知識方面還有很多的不足,在平時的練習中也不懂得擴展與舉一反三,導致這次的實驗做得馬馬虎虎,除此之外也體會到了面向對象程序設計相對于過程化程序設計的優(yōu)越性,總之,語言是一門技巧,要想能熟練掌握,必須多加練習。實驗4 Java異常處理1.實

36、驗目的掌握異常的概念,以及如何定義、拋出和捕獲處理異常。2.實驗內容(1) 做實驗之前要求思考以下問題,作為預習內容;1 錯誤和異常有何區(qū)別?查看Java異常類的關系圖。2 異常是如何拋出、捕獲和處理的?3 Java捕獲和處理異常的結構式怎樣的?4 Try語句如何嵌套?Trow語句有何作用?Finally程序快的作用是什么?(1)錯誤和異常有什么區(qū)別?答:致命性錯誤:如程序進入死循環(huán),或遞歸無法結束,或內存溢出,稱之為錯誤。錯誤只能在編程階段解決,只能依靠其他程序干預,否則一直處于非正常狀態(tài)。 而非致命性的異常:如運算時除數(shù)為0,或操作數(shù)超出范圍,或打開一個文件時發(fā)現(xiàn)文件并不存在,或欲裝入的類

37、文件丟失,或網(wǎng)絡連接中斷等,這類現(xiàn)象稱為異常。(2)異常是如何拋出、捕獲和處理的?答:1、Java程序在執(zhí)行過程中如出現(xiàn)異常,會自動生成一個異常類對象,該異常對象將被提交給Java運行時系統(tǒng),這個過程稱為拋出(throw)異常。2、當Java運行時系統(tǒng)接收到異常對象時,會尋找能處理這一異常的代碼并把當前異常對象交給其處理,這一過程稱為捕獲(catch)異常。3、如果Java運行時系統(tǒng)找不到可以捕獲異常的方法,則運行時系統(tǒng)將終止,相應的Java程序也將退出。4、對于RuntimeException,通常不需要我們去捕獲,這類異常由Java運行系統(tǒng)自動拋出并自動處理。5、派生類構造方法的異常說明必

38、須包含基類構造方法的異常說明,即派生類構造方法的異常必須為基類異?;蚱涓割?,當基類構造方法沒有異常時,派生類構造方法也可以異常聲明。注意,派生類構造器不能捕獲基類構造方法拋出的異常。6、派生類方法可以不拋出異常,即使基類有異常說明,如果派生類方法有異常說明,必須是基類異常或其子類,而且當基類沒有異常聲明時,派生類方法不允許異常聲明(關于構造方法見5中的說明)。7、我們可以在方法聲明時,聲明一個不會拋出的異常,Java編譯器就會強迫方法的使用者對異常進行處理。這種方式通常應用于abstract class和interface中。(3)Java捕獲和處理異常的結構是怎樣的?答:使用try-catc

39、h-finaly語句來捕獲,獲得異常后自己處理或者讓系統(tǒng)自己處理。(4)為了避免程序運行時可能出現(xiàn)的錯誤,將程序代碼放在try程序塊中,緊跟在try語句后面包括一個catch語句,用來指定需要捕獲的異常類型。 在程序中發(fā)生異常時,程序員可以拋出(throw)一個自定義異常類的實例,將其放到異常隊列中去,并激活java的異常處理機制。 當拋出一個異常時,程序的執(zhí)行就不再是線性的,這樣就有可能導致方法的執(zhí)行中斷。在java語言中,使用finally語句來解決此類問題。Finally語句創(chuàng)建一個代碼塊,在try/catch語句執(zhí)行后執(zhí)行,不管是否拋出一個異常,系統(tǒng)都將執(zhí)行finally語句的程序代碼

40、。(2) 運行下面的程序,理解異常的拋出、捕獲與處理。Import java.io.*;public class void main(String args) public staic void main(String args) for(int i=0;i<4;i+) int k; try switch(i) case 0: /divided by zero int zero=0; k=911 /zero break; case 1:/null pointer int b=null; k=b0; break; case 2; /array index out of bound int

41、c=new int2; k=c9; break; case 3: /string index out of bound char ch="abc".charAt(99); break; catch(Exception e) System.out.println("nTestcase#"+i+"n"); System.out.println(e); 以下實驗內容運行結果為:(3)在實驗三中的超市、商品類中創(chuàng)建一個自定義異常類。 要求:在定義商品類時,若銷售商品數(shù)量大于余額則作為異常處理(InsufficientFundsExceptio

42、n)。提示:1 產生異常條件是某類商品銷售數(shù)量大于庫存額,因此是否拋出異常要先判斷該條件。2 確定產生異常的方法,應該在sale方法中產生異常Insufficient Funds Exception。3 處理異常安排在調用sale的時候,因此sale方法要聲明異常,由上級方法捕獲并處理。4 要定義好自己的異常。import java.util.Scanner;public class Z6_3 private long balance=0;public void deposit(long x) /存款balance=balance+x;System.out.println("存&qu

43、ot;+x+"元成功");public void withdraw(long x)throws InsufficientFundsException /取款 if(x<=balance) balance=balance-x; System.out.println("取"+x+"元成功"); else throw new InsufficientFundsException("余額小于取款額,取款失敗"+"n"); public void getbalance(long x) /查詢Syst

44、em.out.println("您的余額為:"+balance); public static void main(String args) Z6_3 account=new Z6_3();Scanner in=new Scanner(System.in);while(true)System.out.println("請輸入您接下來進行的操作序號:1存款;2取款;3查詢余額");int i=in.nextInt(); switch(i) case 1:System.out.print("請輸入存款的數(shù)額:");int j=in.nex

45、tInt();account.deposit(j);break; case 2:System.out.print("請輸入取款的數(shù)額:");int k=in.nextInt(); try account.withdraw(k); catch(InsufficientFundsException f) System.out.print(f.getMessage(); break; case 3:account.getbalance(account.balance);break; class InsufficientFundsException extends Exceptio

46、npublic InsufficientFundsException(String msg)super(msg);3. 討論、心得 在程序的整個運行過程中,程序比較容易調試,也沒出現(xiàn)任何問題,即使如此,我覺得要真正掌握這一部分內容也不是那么容易,所以以后我更應該多去嘗試新的題型,希望能徹底把這一部分給掌握了,以至于使所編寫的程序更加健壯,完美。實驗5 多線程編程1.實驗目的(1) 現(xiàn)成的概念、線程的生命周期。(2) 多線程的編程:擴展Thread類與使用Runnable接口。(3) 使用多線程機制實現(xiàn)動畫2.實驗內容(1) 運行下面的程序,理解用創(chuàng)建Thread子類的方法實現(xiàn)多線程。/S09_

47、01_Thread.JavaImport java.util.*;class S09_01_Thread extends Thread int pauseTime; String name; public S09_01_Thread(int x,String n) pauseTime=x; name=n;public void run() while(true) try system.out.println(name+":"+new Date(System.currentTimeMillis(); Tread.sleep(pauseTime); catch(Exceptio

48、n e)System.out.println(e); static public void main(String srgs) S09_01_Thread tp1=new S09_01_Thread(1000,"Fast"); tp1.start(); S09_01_Thread tp2=new S09_01_Thread(3000,"Slow"); tp2.start(); (2) 運行下面的程序,理解用實現(xiàn)Runnable接口的方法實現(xiàn)多線程。/S09_02_Thread.JavaImport java.util.*;class S09_02_Thr

49、ead implements Runnable int pauseTime; String name; public S09_02_Thread(int x,String n) pauseTime=x; name=n;public void run() while(true) try system.out.println(name+":"+new Date(System.currentTimeMillis(); Tread.sleep(pauseTime); catch(Exception e)System.out.println(e); static public voi

50、d main(String srgs) Thread t1=new Thread(new S09_02_Thread(1000,"Fast"); t1.start(); Thread t2=new Thread(new S09_02_Thread(3000,"Slow"); t2.start(); (3) 創(chuàng)建簡單的程序ThreeThread.java,該程序將創(chuàng)建三個線程,每個線程應當顯示它所運行的時間(可以考慮使用Date類或Calendar類)。package 線程;import java.util.*;public class L09_03_Th

51、reeThread extends Thread int pauseTime; String name; public L09_03_ThreeThread(int x,String n) pauseTime=x; name=n; public void run() while(true) try System.out.println(name+":"+new Date(System.currentTimeMillis(); catch(Exception e) System.out.println(e); public static void main(String args) L09_03_ThreeThread tp1=new L09_03_ThreeThread(1000,"Fast"); tp1.start(); L09_03_ThreeThread tp2=new L09_03_ThreeThread(2000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論