0

私は学校の課題に取り組んでいて、地図について少し教えています。これまでのところ、このコードがあります

    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       *

アスタリスクを正しく割り当てていますか?キーと*の#を表示する方法をフォーマットしますか?

必要に応じて、ここに他の部分があります

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 # @ ^ # # #
4

1 に答える 1

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";
}
于 2013-09-25T23:27:51.950 に答える