2013-09-25 52 views
0

IM在一所學校分配工作教我們一些關於地圖 我有這樣的代碼到目前爲止誤差與地圖的toString

import java.util.Map; 
    import java.util.TreeMap; 
    import java.util.Scanner; 
    import static java.lang.System.*; 
    import java.util.ArrayList; 
    import java.util.Arrays; 

public class Histogram 
{ 
    private Map<String,Integer> histogram;  

    public Histogram(String sent) 
    { 

     histogram = new TreeMap<String,Integer>(); 

     String[] words = sent.split(" "); 

     for(String c : words) 
    { 
     if(histogram.containsKey(c)) 
     { 
      histogram.put(c,histogram.get(c)+1); 
     } 
     else 
     { 
      histogram.put(c,1); 
     } 

    } 
    } 

    public String toString() 
    { 
     String output=""; 

     output+="char\t1---5----01---5\n"; 

     String z =""; 

      for(String s: histogram.keySet()) 
     { 
      for(int x=0 ; histogram.size() > x;x--) 
      { 
       z += "*"; 
      } 
     } 

     return output+ "\n\n" ; 
    } 
} 

我想太字符串格式化這樣

char 1---5----01---5 
a  ** 
b  * 
c  ** 
d  ** 
e  ** 
f  * 
g  ** 
h  *** 
i  ** 
k  * 

是我正確分配astericks,我將如何格式化顯示密鑰然後#的*的

這裏是其他部分,如果需要

public class HistogramTester 
{ 
    public static void main(String args[]) throws IOException 
    { 

     Scanner in = new Scanner(new File("Histogram.dat")); 

      while (in.hasNextLine()) 
      { 
       String n = in.nextLine(); 
       Histogram a = new Histogram(n); 
       System.out.println (a); 
      } 

    } 
} 

這裏是dat文件是否有幫助

a b c d e f g h i a c d e g h i h k 
1 2 3 4 5 6 1 2 3 4 5 1 3 1 2 3 4 
Y U I O Q W E R T Y 
4 T # @^# # # 
+0

你試過運行呢?輸出是不是你所期望的?你能顯示你實際得到的輸出嗎? –

+0

甚至沒有試圖解決你的問題,我看到z甚至沒有在你的例子中使用 –

回答

0

試試這個:

for(String s: histogram.keySet()) { 
    StringBuilder str = new StringBuilder(); 
    Integer value = histogram.get(s); 
    if (value!=null) 
     for(int x = 0; x < value.intValue(); x++) { 
     str.append("*"); 
     } 
    output+=s+"\t"+str.toString()+"\n"; 
}