如何在java中绘制正方形并将值放入其中?

时间:2014-12-16 19:08:19

标签: java linked-list drawing

我有一个包含链表的Java程序。我想在命令行中绘制正方形并将链表的值放在其中。输出应该是这样的:

-----------------
| 5 | 7 | 8 | 9 |
-----------------

这些数字只是展示的例子。这就是我到目前为止所做的:

public void display()
    {
        Node<data> temp = ll.getHead();//ll is linked list
        for(int i=0;i<ll.size();i++)System.out.print("---------");
        System.out.println();
        for(int i=0;i<ll.size();i++)System.out.print("|       |");
        System.out.println();
        for(;temp!=null;temp = temp.next)System.out.print("|   "+temp.data.Value+"  |");
        System.out.println();
        for(int i=0;i<ll.size();i++)System.out.print("|       |");
        System.out.println();
        for(int i=0;ll.size();i++)System.out.print("---------");
        System.out.println();
 }   

此代码存在两个问题:它根本没有效率,如果值大于9,则线条将移动,所有绘图都将被错过。有没有更好的方法来做我想要的?我认为这段代码很清楚,足以显示问题。如果没有,请告诉我做得更好。 谢谢。

2 个答案:

答案 0 :(得分:1)

你可以使用StringBuilder作为上下行,因为它们是相同的。 并且您可以在同一个循环中构建所有行,以便可以处理值的变量长度:

StringBuilder line = new StringBuilder();
StringBuilder values = new StringBuilder();

for(;temp!=null;temp = temp.next) {

  String value =Integer.toString(temp.data.Value);

  line.append("-");
  values.append("|");

  for(int i=0; i<value.length(); i++) { line.append("-"); }
  values.append(value);
}

line.append("-");
values.append("|");

System.out.println(line.toString());
System.out.println(values.toString());
System.out.println(line.toString());

答案 1 :(得分:0)

似乎n个数字上方和下方的破折号等于4n + 1.因此,对于循环:

for(int i = 0; i < (4 * ll.size()) + 1; i++) System.out.print("-");
    System.out.println();

// same as yours
for(;temp!=null;temp = temp.next)System.out.print("|   "+temp.data.Value+"  |");
    System.out.println();

for(int i = 0; i < (4 * ll.size()) + 1; i++) System.out.print("-");

希望这可以解决问题

编辑:如果您的数据不是数字,那么您需要为每个数据填充一致的空间。然后你将计算每个方格的破折号数并得到它的公式。 祝你好运