2

TreeMap で文字列のリストを作成して、多数の学生の成績を追跡しています。現在、私のプログラムは次のような文字列のリストを出力しています:

Jimmy: C+
Tim: A
Samantha: B-
Mike: A-

次のように印刷したいとき:

Jimmy:    C+
Tim:      A
Samantha: B-
Mike:     A-

名前とグレードをこのように並べるにはどうすればよいですか? すべてを出力するコードのセクションは次のとおりです。

//Print all students with their grades
case "P": System.out.println();
          for(Map.Entry<String, String> entry : grades.entrySet())
          {
             System.out.println(entry.getKey() + ":  " + entry.getValue());
          }
          System.out.println();
          break;
4

4 に答える 4

3

おそらく最も簡単な解決策は、印刷ステートメントでスペースの代わりにタブ文字を使用することです。

System.out.println(entry.getKey() + ":\t" + entry.getValue());

もう 1 つの方法は、Stringformatメソッドを使用して、生徒の名前の右側にスペースを埋め込むことです。次のコードは、生徒の名前を 10 文字幅の列に出力します。レポートを印刷する前に名前の最大長を知っていれば、これはより信頼できます (簡単に見つけることができるはずです)。

String name = "Tim:";
String student = String.format("%1$-10s", name);
System.out.println(student + "A");
于 2013-03-20T17:11:09.970 に答える
0

これをループ内に入力System.out.println()します。

String.format("%-10s %s", entry.getKey()+":", entry.getValue());
于 2013-03-20T17:22:00.930 に答える
0

System.out.format を右揃えなどのさまざまな形式オプションで使用するオプションを見ることができます。これをグーグルで検索してください。ここにあなたが見ている1つのリンクがあります

于 2013-03-20T17:12:20.443 に答える
0

文字列を左パディングしたい。この回答を確認してください: How can I pad a String in Java?

また、出力しようとしているすべての名前の最大長を計算する関数が必要になる場合もあります。何かのようなもの。

private int maxLength(Collection<String> names) {
        int max = 0;
        for (String s : names) {
            if (s.length() > max) {
                max = s.length();
            }
        }
        return max;
    }

次に、次のように使用します: maxLength(grades.keySet());

于 2013-03-20T17:15:22.563 に答える