所以我试图创建返回String的函数。字符串以输入的单词开头,然后是一定数量的空格,然后是数字。空格的数量根据单词的长度而变化。这个想法是,当多次调用该方法时,所有单词和数字都应该排成一行。我有一张图片,说明我希望如何格式化String。
这是我目前拥有的功能。当我在函数中键入几个随机单词和数字并每次使用printLn语句时,该函数正常工作并按照我希望的格式打印(或如上例所示)
public String formatList(String x, int y){
String z = x;
int stringLength=x.length();
int i=0;
while(i<(30-stringLength)){
z+=" ";
i++;
}
z+=String.valueOf(y);
return z;
}
然而,当我有一个for循环时输入一个单词和数字列表,并将其添加到标题为wordList的JTextArea中,我得到以下内容(请注意,wordDistribution是我定义的一个对象,实际上是一个映射条目的ArrayList和getDistribution是一个返回此ArrayList的函数) :
String x="";
for(int i=0; i<wordDistribution.getDistribution().size();i++){
String word = wordDistribution.getDistribution().get(i).getKey();
int count = wordDistribution.getDistribution().get(i).getValue();
x+=formatList(word,count)+"\n";
}
wordList.setText(x);
答案 0 :(得分:3)
使用String.format()
,例如
StringBuilder buf = new StringBuilder();
buf.append(String.format("%-20s%4d%n", "Foo", 42));
buf.append(String.format("%-20s%4d%n", "Hello World", 11));
buf.append(String.format("%-20s%4d%n", "This is Great", 999));
System.out.print(buf);
输出
Foo 42
Hello World 11
This is Great 999