我是Java的新手,我有4个int堆栈,我需要以特定的方式打印出来。我使用的IDE是BlueJ。
我想打印数组看起来像下面的
|110| |231| |333| |444|
|111| |232| |334| |447|
|112| |233| |335| |448|
|113| |234| |336| |449|
|114| |235| |337| |450|
|115| |236| |338| |451|
我正在尝试使用System.out.println("|"+stack1.pop()+"|")
,但它会产生问题,因为我不确定如何从底部返回,返回顶部。防爆。 115 - >最多回到231.每列代表一个堆栈。
谢谢!
答案 0 :(得分:3)
使用String.format()
比连接一串字符串更好
System.out.println(String.format("|%s|\t|%s|\t|%s|\t|%s|",
stack1.pop(),stack2.pop(),stack3.pop(),stack4.pop()));
如果您想以相反的顺序打印Stack
元素,请先reverse
堆栈
答案 1 :(得分:2)
你无法在控制台中这样做:
作为替代方案,您可以打印每个堆栈中的值,然后向下移动,如下所示:
System.out.println("|"+stack1.pop()+"|\t|"+stack2.pop()+"|\t|"+stack3.pop()+"|\t|"+stack4.pop()+"|" );
修改强> 如评论所示 - 您可以使用String.format(...),查看here以了解可用的格式选项
答案 2 :(得分:0)
这个怎么样:
ArrayList<Stack<Integer>> arrays=new ArrayList<Stack<Integer>>();
arrays.add(stack1);
arrays.add(stack2);
arrays.add(stack3);
arrays.add(stack4);
//Put some code here to Determine the stack size, if all are unequal in size
int size=stack1.size();
for(int i=0;i<size;i++){
String value="";
String temp="";
// 4 =如果您知道堆栈的数量将仅为4
for(int j=0;j<4;j++){
//Handle here Empty Stack Exception and print blank
value="|"+(String)(arrays.get(j)).pop().toString()+"|"+" ";
temp=temp+value;
}
System.out.println(temp);
}