题库练习3(质因子、取近似值、合并表记录)
生活随笔
收集整理的這篇文章主要介紹了
题库练习3(质因子、取近似值、合并表记录)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 質(zhì)因子
功能:輸入一個正整數(shù),按照從小到大的順序輸出它的所有質(zhì)數(shù)的因子(如180的質(zhì)數(shù)因子為2?2?3?3?5?)
最后一個數(shù)后面也要有空格
import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);long num=sc.nextLong();System.out.println(new Main().getFactor(num)+" ");}public String getFactor(long num){String string="";if(num==0||num==1||num==2||num==3)return num+" ";int i=2;while(i*i<=num){if(num%i==0){string+=i+" ";num/=i;i=1;}i++;}return string+num;} }2.? 取近似值
寫出一個程序,接受一個正浮點數(shù)值,輸出該數(shù)值的近似整數(shù)值。如果小數(shù)點后數(shù)值大于等于5,向上取整;小于5,則向下取整。
import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);float f=sc.nextFloat();String str=f+"";int i=str.indexOf(".");char[] chs=str.toCharArray();long num=Long.valueOf(str.substring(0,i)).longValue();if(chs[i+1]-'5'>=0)num+=1;System.out.println(num);} }注:
1.int轉(zhuǎn)換為String
比如int?a=1;讓String?str=a+"";
2.String轉(zhuǎn)換為int
Integer.valueOf(String str).intValue();
3. 合并表記錄
數(shù)據(jù)表記錄包含表索引和數(shù)值,請對表索引相同的記錄進(jìn)行合并,即將相同索引的數(shù)值進(jìn)行求和運算,輸出按照key值升序進(jìn)行輸出。
import java.util.Scanner; import java.util.Map; import java.util.TreeMap;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=Integer.valueOf(sc.nextLine()).intValue();int i=0;Map<Integer,Integer> map=new TreeMap<Integer,Integer>();while(i<n){String[] strs=sc.nextLine().split(" ");int key=Integer.valueOf(strs[0]).intValue();int value=Integer.valueOf(strs[1]).intValue();if(map.containsKey(key)){map.put(key,value+map.get(key));}elsemap.put(key,value);i++;}for(int key:map.keySet()){System.out.println(key+" "+map.get(key));}} }注:
1.
| boolean | containsKey(Object?key) ??????????如果此映射包含對于指定鍵的映射關(guān)系,則返回 true。 |
2.TreeMap和HashMap區(qū)別
| 基于紅黑二叉樹的NavigableMap的實現(xiàn) | 數(shù)組方式存儲key/value |
| 線程非安全 | 線程非安全 |
| 不允許null | 允許null作為key和value |
| key不可以重復(fù),value允許重復(fù) | key不可以重復(fù),value允許重復(fù) |
| 存入TreeMap的元素應(yīng)當(dāng)實現(xiàn)Comparable接口或者實現(xiàn)Comparator接口,會按照排序后的順序迭代元素,兩個相比較的key不得拋出classCastException | 不保證元素迭代順序是按照插入時的順序 |
| 主要用于存入元素的時候?qū)υ剡M(jìn)行自動排序,迭代輸出的時候就按排序順序輸出 | key的hash值是先計算key的hashcode值,然后再進(jìn)行計算,每次容量擴(kuò)容會重新計算所以key的hash值,會消耗資源,要求key必須重寫equals和hashcode方法 |
HashMap:默認(rèn)初始容量16,加載因子0.75,擴(kuò)容為舊容量乘2,查找元素快,如果key一樣則比較value,如果value不一樣,則按照鏈表結(jié)構(gòu)存儲value,就是一個key后面有多個value;
3. Map遍歷
public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("1", "value1");map.put("2", "value2");map.put("3", "value3");map.put("4", "value4");//第一種:普通使用,二次取值System.out.println("\n通過Map.keySet遍歷key和value:"); for(String key:map.keySet()){System.out.println("Key: "+key+" Value: "+map.get(key));}//第二種System.out.println("\n通過Map.entrySet使用iterator遍歷key和value: "); Iterator map1it=map.entrySet().iterator();while(map1it.hasNext()){Map.Entry<String, String> entry=(Entry<String, String>) map1it.next();System.out.println("Key: "+entry.getKey()+" Value: "+entry.getValue());}//第三種:推薦,尤其是容量大時 System.out.println("\n通過Map.entrySet遍歷key和value"); for(Map.Entry<String, String> entry: map.entrySet()){System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());}//第四種 System.out.println("\n通過Map.values()遍歷所有的value,但不能遍歷key"); for(String v:map.values()){System.out.println("The value is "+v);}}3. Map的存取
put()
get()
?
?
?
總結(jié)
以上是生活随笔為你收集整理的题库练习3(质因子、取近似值、合并表记录)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 题库练习2(随机数去重排序、分割字符串、
- 下一篇: 题库练习4(提取不重复的数字、字符个数统