java基礎作業五

1."sdfgzxcvasdfxcvdf"獲取該字符串中的字母出現的次數。


   希望打印結果:a(1)c(2).....

package week6homeworks;
/**
 * @author LYB
 * 1."sdfgzxcvasdfxcvdf"獲取該字符串中的字母出現的次數。
 *    希望打印結果:a(1)c(2).....
 *    
 *   思路:
 *   因此對於結果的分析發現,字母和次數之間存在着映射關係,而且這種關係很對。
 *   很多就需要存儲,能存儲映射關係的容器有數組和Map集合。關係一方式有序編號嗎?沒有!
 *   那就是使用Map集合。又發現可以保證唯一性的一方具備着順序如:a bc ...
 *   所以可以使用TreeMap集合。
 *   這個集合最終應該存儲的是字母和次數的對應關係。
 *   1,因爲操作的是字符串中的字母,所以先將字符串變成字符數組。
 *   2,遍歷字符數組,用每一個字母作爲鍵去查詢Map集合這個表。
 *   如果該字母鍵不存在,就將該字母作爲鍵1作爲值存儲到Map集合中。
 *   如果該字母存在,就將該字母鍵對應值取出來並+1,再將該字母和+1後的值存儲到Map集合中,
 *   鍵相同值會覆蓋。這樣就記錄了該字母的次數。  
 */
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class PrintString {

	public static void main(String[] args) {
//	   String str = "sdfgzxcvasdfxcvdf";
	   Scanner input = new Scanner(System.in);
	   System.out.println("請輸入字符串:");
	   String str = input.next();
	   String s = getCharCount(str);
	   System.out.println(s);

	}
 /*
  * 獲取字符串中每個字母對應個數的函數
  */
	public static String getCharCount(String str) {
		// TODO Auto-generated method stub
		//str轉換爲字符串數組
		char[] chs = str.toCharArray();
		
		Map<Character,Integer> map = new TreeMap<>();
        
        for (int i = 0; i < chs.length; i++) {
        	int count = 1;
        	Integer value = map.get(chs[i]);
        	if(value != null){
        		count = value+1;
        	}
       // 	count++;
        	map.put(chs[i], count);
		}
//        for (int i = 0; i < chs.length; i++) {
//			Integer value = map.get(chs[i]);
//			int count = 1;
//			if(!map.containsKey(chs[i])){
//			     count = value+1;    
//			}
//			map.put(chs[i], count);
//		}
//		for (int i = 0; i < chs.length; i++) {
//			Integer value = map.get(chs[i]);
//			if(value == null){
//				map.put(chs[i], value);
//			}
//		}
		return mapToString(map);
	}
//自定義map集合打印出來的myToString()方法打印題目要求的結果
	private static String mapToString(Map<Character,Integer> map) {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();
		Iterator<Character> it = map.keySet().iterator();
		while(it.hasNext()){
			Character key = it.next();
			Integer value = map.get(key);
			sb.append(key+"("+value+")");
		}
		
		return sb.toString();
	}

}
2.每一個省份都對應着很多城市,要求:
  通過省份可以查詢出對應的城市;
  通過城市也能查詢出所屬的省份。
package week6homeworks;

import java.util.Iterator;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import javax.management.RuntimeErrorException;


/**
 * 
 * @author LYB
 * 2.每一個省份都對應着很多城市,要求:
 *  通過省份可以查詢出對應的城市;
 *  通過城市也能查詢出所屬的省份。
 */
public class QueryResponse {
//   static{
//	   Map<String,String[]> map = new HashMap<>();
//		map.put("北京", new String[]{"北京"});
//		map.put("天津", new String[]{"天津"});
//		map.put("上海", new String[]{"上海"});
//		map.put("重慶", new String[]{"重慶"});
//		map.put("安徽省", new String[]{"合肥","宿州","淮北","阜陽","滁州"});
//		map.put("福建省", new String[]{"福州","廈門","南平","三明","莆田"});
//		map.put("甘肅省", new String[]{"蘭州","白銀","天水","酒泉","慶陽"});
//		map.put("廣東省", new String[]{"廣州","深圳","清遠","韶關","潮州"});
//		map.put("貴州省", new String[]{"貴陽","遵義","六盤水","畢節","安順"});
//		map.put("河北省", new String[]{"石家莊","邯鄲","唐山","保定","秦皇島"});
//		map.put("黑龍江省", new String[]{"哈爾濱","齊齊哈爾","黑河","大慶","鶴崗"});
//		map.put("河南省", new String[]{"鄭州","洛陽","焦作","新鄉","商丘"});
//		map.put("湖北省", new String[]{"武漢","黃岡","十堰","宜昌","荊門"});
//		map.put("陝西省", new String[]{"西安","寶雞","銅川","延安","安康","漢中","榆林"});
//   }
    static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		Map<String,String[]> map = new HashMap<>();
		map.put("北京", new String[]{"北京"});
		map.put("天津", new String[]{"天津"});
		map.put("上海", new String[]{"上海"});
		map.put("重慶", new String[]{"重慶"});
		map.put("安徽省", new String[]{"合肥","宿州","淮北","阜陽","滁州"});
		map.put("福建省", new String[]{"福州","廈門","南平","三明","莆田"});
		map.put("甘肅省", new String[]{"蘭州","白銀","天水","酒泉","慶陽"});
		map.put("廣東省", new String[]{"廣州","深圳","清遠","韶關","潮州"});
		map.put("貴州省", new String[]{"貴陽","遵義","六盤水","畢節","安順"});
		map.put("河北省", new String[]{"石家莊","邯鄲","唐山","保定","秦皇島"});
		map.put("黑龍江省", new String[]{"哈爾濱","齊齊哈爾","黑河","大慶","鶴崗"});
		map.put("河南省", new String[]{"鄭州","洛陽","焦作","新鄉","商丘"});
		map.put("湖北省", new String[]{"武漢","黃岡","十堰","宜昌","荊門"});
		map.put("陝西省", new String[]{"西安","寶雞","銅川","延安","安康","漢中","榆林"});
		
		 QueryResponse qur = new QueryResponse();
	        while (true) {
	            System.out.println("--------請選擇操作--------\n\t1.省份查詢\n\t2.城市查詢\n\t3.退出");
	            System.out.println("-------------------------");
	            System.out.println("輸入:");
	            String opString = sc.next();
	            switch (opString) {
	            case "1":
	                qur.getProvince(map);
	                break;
	            case "2":
	                qur.getCity(map);
	                break;
	            case "3":
	                System.exit(0);
	                break;
	            default:
	                System.out.println("輸入錯誤");
	                break;
	            }
	        }
	    }
	private  void getCity(Map<String,String[]> map) {
		System.out.println("請輸入要查詢的城市:");
		String city = sc.next();
		if(city == null){
			throw new RuntimeErrorException(null, "非法輸入!");
		}else if(!map.containsValue(city)){
			  System.out.println("您輸入的城市不存在!");
		}else{
			  Iterator<String> it = map.keySet().iterator();
			  while (it.hasNext()) {
				  String key = it.next();
				  String[] value = map.get(key);
			   System.out.println("城市爲: " + key.toString() + " 對應省份爲: " + value.toString());
			  }
		}
		
	}
	private void getProvince(Map<String,String[]> map) {
		System.out.println("請輸入要查詢的省份:");
		String province = sc.next();
		if(province == null){
			throw new RuntimeErrorException(null,"非法輸入!");
		}else if(!map.containsKey(province)){
			System.out.println("您輸入的省份不存在!");
		}else{
			mapToString(map);
//			Iterator<String> it = map.keySet().iterator();
//			while(it.hasNext()){
//				String key = it.next();
//				String[] Value = map.get(key);
//				System.out.println("省份爲:"+key+"對應城市爲:"+Value);
//			}
		}
		
	}
private static String mapToString(Map<String, String[]> map) {
		
		StringBuilder sb = new StringBuilder();
		
		Iterator<String> it = map.keySet().iterator();
		
		while(it.hasNext()){
			String key = it.next();
			String[] value = map.get(key);
			
			sb.append(key+"("+value+")");
		}
		
		return sb.toString();
	}
	
		
		
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章