目前我有一个生成树的程序。我使用https://stackoverflow.com/a/8948691来获取树的字符串输出。为此,我稍微修改了链接中的函数:而不是使用System.out.println
我重写了代码以符合我的要求:
public String getStringRepresentation(String prefix, boolean end, int position)
{
String retval = prefix + (position != -1? (end ? "└──" : "├──") + " " + position +(branches==null? "[" + content + "]" : ""):"") + "\r\n";
if(branches != null)
{
for (int i = 0; i < branches.size() - 1; i++) {
retval += branches.get(i).getStringRepresentation(prefix + (end ? " " : "│ "), false,i);
}
if (branches.size() >= 1) {
retval += branches.get(branches.size() - 1).getStringRepresentation(prefix + (end ?" " : "│ "), true,branches.size() - 1);
}
}
return retval;
}
示例文本输出将是
├── 0
│ ├── 0[F]
│ └── 1
│ ├── 0[V]
│ └── 1[A]
└── 1
├── 0[D]
└── 1[S]
此字符串I显示以下内容:
JTextArea textarea = new JTextArea(infoMessage);
textarea.setFont(new Font("monospaced", Font.PLAIN, 14));
JOptionPane.showMessageDialog(null, textarea);
看起来像这样:
(如您所见,对齐方式不应该如此。)
答案 0 :(得分:0)
我发现了问题。显然,monospaced不是正确的字体。如果我使用“consolas”(记事本使用的那个),一切都会正确显示。
答案 1 :(得分:-2)
以下是打印二进制树的java代码,如下所示:
IndexOf
代码:
1
/ \
/ \
2 \
/ \ 3
4 5 / \
9 \
8
/ \
6 7