Java作業05(第7章 常用實用類2)

來源:互聯網
上載者:User

package homework05;</p><p>import java.math.BigInteger;</p><p>public class Ch07_3 {<br /> public static double factorial(int n) //求階乘函數<br /> {<br /> if(n==0) return 1;<br /> else return n* factorial(n-1);<br /> }<br /> public static BigInteger factorial2(int n){<br /> BigInteger bigInt=null;<br /> if(n==0) {<br /> bigInt=new BigInteger("1");<br /> return bigInt;<br /> }</p><p> else{<br /> bigInt=new BigInteger(Integer.toString(n));<br /> return bigInt.multiply(factorial2(n-1));<br /> }<br /> }</p><p>public static void main(String[] args) {<br />/*4、計算1+2!+3!+4!+···從第100項到200項之和*/<br /> double f=0;<br /> for(int k=100;k<=200;k++){<br /> f+=factorial(k);<br /> }<br /> System.out.println("1+2!+3!+4!+···從第100項到200項之和:"+f); //此時輸出的值是Infinity<br />// Infinity表示正無窮大,即大於dOUble類型所能表示的最大數值。負無窮大將輸出-Infinity.<br />// 實際上,任何計算結果只要超出double類型所能表示的最大數值,就會產生這樣的結果。<br /> //故使用大整數來處理。<br /> BigInteger result=new BigInteger("0");<br /> for(int k=100;k<=200;k++){<br /> result=result.add(factorial2(k));<br /> }<br /> System.out.println("1+2!+3!+4!+···從第100項到200項之和:"+result);<br /> } </p><p>}</p><p>

結果:

1+2!+3!+4!+···從第100項到200項之和:Infinity
1+2!+3!+4!+···從第100項到200項之和:792621072814943158937574954417696054502273470568077747007887743862285047941581535541498718312275086275679893343076013862361579680670972527976009279036348551929550827607601145450876014530359530008733947699274904382825444692112993342058966668017369617374101405221613980910401559347844227172278387932925351155828685624342954436057587785914951951445917696000000000000000000000000

此題正確與否有待驗證。

 

package homework05;</p><p>import java.util.HashSet;<br />import java.util.Iterator;</p><p>/*<br /> * 題目:有集合A={1,2,3,4}和B={1,3,7,9,11},編寫一個應用程式輸出A和B交集、並集和差集。<br /> */<br />public class Ch07_4 {</p><p>public static void displaySet(HashSet<Integer> temp){<br />Iterator<Integer> iter=temp.iterator();<br />while(iter.hasNext()){<br />Integer te=(Integer) iter.next();<br />System.out.print(te.intValue()+"/t");<br />}<br />System.out.println();//換行。<br />}</p><p>public static void main(String[] args) {<br />Integer[] a={1,2,3,4};<br />Integer[] b={1,3,7,9,11};<br />HashSet<Integer> A=new HashSet<Integer>();<br />HashSet<Integer> B=new HashSet<Integer>();<br />for(int i=0;i<a.length;i++){ //初始化集合A<br />A.add(a[i]);<br />}<br />for(int i=0;i<b.length;i++){ //初始化集合B<br />B.add(b[i]);<br />}</p><p>HashSet<Integer> tempSet=(HashSet<Integer>)A.clone(); //作為中間變數 儲存集合A的原始值。</p><p>A.addAll(B); //並集<br />System.out.print("輸出A和B並集的結果:");<br />displaySet(A); //輸出結果。</p><p>A=(HashSet<Integer>)tempSet.clone();<br />A.retainAll(B); //交集<br />System.out.print("輸出A和B交集的結果:");<br />displaySet(A); //輸出結果。</p><p>A=(HashSet<Integer>)tempSet.clone();<br />A.remove(B); //交集<br />System.out.print("輸出A和B差集的結果:");<br />displaySet(A); //輸出結果。</p><p>}</p><p>}<br />

運行結果:

輸出A和B並集的結果:1 2 3 4 7 9 11 
輸出A和B交集的結果:1 3 
輸出A和B差集的結果:1 2 3 4

package homework05;</p><p>import java.util.Iterator;<br />import java.util.TreeSet;</p><p>/*<br /> * 題目:有10個硬碟,有兩個重要的屬性:價格和容量。編寫一個應用程式,使用<br /> * TreeMap<K,V>類,分別按照價格和容量排序並輸出10個硬碟的詳細資料。<br /> */<br /> //硬碟類<br />class HardDisk implements Comparable{<br />private int price;<br />private int content;</p><p>public static int flag=1;//flag作為按價格還是按容量的標誌來排列。1:價格 2:容量</p><p>public HardDisk(int price,int content){<br />this.price=price;<br />this.content=content;<br />}<br />public int compareTo(Object b){<br />HardDisk hd=(HardDisk)b;<br />if(flag==1){<br />return(this.price-hd.price);<br />}<br />if(flag==2){<br />return(this.content-hd.content);<br />}<br />return 0;<br />}</p><p>public int getContent() {<br />return content;<br />}<br />public void setContent(int content) {<br />this.content = content;<br />}<br />public int getPrice() {<br />return price;<br />}<br />public void setPrice(int price) {<br />this.price = price;<br />}</p><p>}<br />public class Ch07_5 {</p><p>public static void main(String[] args) {<br />HardDisk[] hds={new HardDisk(40,2),new HardDisk(80,25),new HardDisk(200,40),new HardDisk(100,35),<br />new HardDisk(150,30),new HardDisk(25,1),new HardDisk(250,38),new HardDisk(300,50),<br />new HardDisk(270,60),new HardDisk(500,200)};</p><p>TreeSet<HardDisk> treeSet=new TreeSet<HardDisk>();<br />for(int i=0;i<hds.length;i++){ //預設按價格高低排序。<br />treeSet.add(hds[i]);<br />}<br />Iterator<HardDisk> iter=treeSet.iterator();<br />System.out.println("===詳細資料===");<br />System.out.println("價格/t容量");<br />while(iter.hasNext()){<br />HardDisk hd=iter.next();<br />System.out.println(hd.getPrice()+"/t"+hd.getContent());<br />}</p><p>//<br />treeSet.clear(); //清除treeSet中的內容。<br />for(int i=0;i<hds.length;i++){ //按容量高低排序。<br />HardDisk.flag=2;<br />treeSet.add(hds[i]);<br />}<br />Iterator<HardDisk> iter2=treeSet.iterator();<br />System.out.println("===詳細資料===");<br />System.out.println("容量/t價格");<br />while(iter2.hasNext()){<br />HardDisk hd=iter2.next();<br />System.out.println(hd.getContent()+"/t"+hd.getPrice());<br />}</p><p>}</p><p>}<br />

運行結果:

===詳細資料===
價格 容量
25 1
40 2
80 25
100 35
150 30
200 40
250 38
270 60
300 50
500 200
===詳細資料===
容量 價格
1 25
2 40
25 80
30 150
35 100
38 250
40 200
50 300
60 270
200 500

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.