在給予輸入作爲它給出爲爲Java 8輸出而在Java 7的輸出是。相同的代碼產生針對Java 7&不同輸出8
該問題陳述也提供供您參考。
任何幫助,將不勝感激。
由1-9的數字組成的字符串將作爲輸入傳遞。 程序必須打印根據 發生次數排序的數字。如果一個或多個數字發生的次數相同,則必須先打印最小數字。
輸入格式:第一行包含由1-9
邊界條件的N個數位:3 < = N < = 30
輸出格式:數字排序基於出現的數目。
實施例輸入/輸出1:
輸入:4443338993
輸出:3333444998
說明:3中發生的最次數(4次)。因此首先打印它 。 4發生三次,因此在3s後打印。 9 出現兩次,因此在4s後打印。 8只發生一次,並且之後9.
實施例的輸入/輸出2 因此印刷:
輸入:95559998228
輸出:99995552288
說明:這裏2和8發生了兩次。因此2被小 位之前8
package E001;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
/**
*
* @author Anagh
*/
public class CharOccurrences {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
char[] arr = input.toCharArray();
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0; i < arr.length; i++)
{
if(!map.containsKey(String.valueOf(arr[i])))
{
map.put(String.valueOf(arr[i]), 1);
}
else
{
map.put(String.valueOf(arr[i]), map.get(String.valueOf(arr[i]))+1);
}
}
TreeMap<String, Integer> output = sortByValue(map);
printMap(output);
}
public static TreeMap<String, Integer> sortByValue (HashMap<String, Integer> map)
{
ValueComparator vc = new ValueComparator(map);
TreeMap<String,Integer> sortedMap = new TreeMap<>(vc);
sortedMap.putAll(map);
return sortedMap;
}
private static void printMap(TreeMap<String, Integer> map) {
String key;
int value;
for (Map.Entry<String, Integer> entry : map.entrySet())
{
key = entry.getKey();
value = entry.getValue();
for(int j = 0; j < value; j++)
{
System.out.print(key);
}
}
}
}
class ValueComparator implements Comparator<String> {
Map<String, Integer> map;
public ValueComparator(Map<String, Integer> base) {
this.map = base;
}
@Override
public int compare(String a, String b) {
if (map.get(a) > map.get(b)) {
return -1;
} else {
return 1;
} // returning 0 would merge keys
}
}
看來有趣的問題,但你可以在功能日誌發現這一點爲自己,你發佈大量的代碼在這裏,不要指望任何人對其進行調試爲你 – Lrrr