我正在爲處理矩陣的程序創建一個輸出窗口。它應該打印出格式化版本的預製命令。但我在對齊方面遇到問題。我知道String.format
工程,因爲我有一個toString()
方法,可以正常工作。等寬html格式jlabel
通知如何第二和第三行沒有被正確地間隔開。這是因爲100.00已經完全填充了格式化的字符串,因爲0.00需要額外的空間來填充字符串(請參閱toHtml())。我相信這與HTML的顯示方式有關,但我不確定。我的猜測是零後面的空格沒有正確顯示或正在合併。
以下是涉及的方法。
public String toHtml(int dec)
{
String[] colors = {"#C0C0C0","#FFFFFF"};
String f = "%-"+(getLongestValue()+dec+1)+"."+dec+"f";
String res = "";
for(int r = 0;r<rows;r++)
{
for(int c = 0;c<columns;c++)
{
res += "<span style=\"background-color:"+colors[(r+c)%2]+";\">"+String.format(f, contents[r][c])+"</span>";
}
res += "<p>";
}
return res;
}
它創建要顯示的HTML文本。方法getLongestValue()返回數組「內容」中小數位之前的任意數字的最大長度。
和
newOutput("New Matrix ["+name+"]<br>"+m.toHtml());
public void newOutput(String s)
{
JLabel l = new JLabel("<html>"+s+"<br></html>");
l.setFont(new Font("Monospaced",1,18));
jPanel1.add(l);
}
這增加了標籤到輸出窗口
另外,這裏是參考矩陣的
public String toString()
{
String f = "%-"+(getLongestValue()+3)+".2f ";
String res = "";
for(int r = 0;r<rows;r++)
{
for(int c = 0;c<columns;c++)
{
res += String.format(f, contents[r][c]);
}
res += "\n";
}
return res;
}
輸出通過的toString的toString()方法() toString Output
A m礦石極端版本
在這種情況下,程序應該已經發現最大值爲-15或-20,並將格式長度的大小設置爲6(3爲長度,2爲小數位,1爲1對於十進制),但它並沒有出現除了我提到的兩個值之外的任何值都遵循該格式。
這裏的toString()爲前面的例子 toString() output
您可以精確地寫一些你本來期望? –