【问题标题】:printing out stack without [] [duplicate]打印出没有[]的堆栈[重复]
【发布时间】:2021-02-06 02:05:47
【问题描述】:

当我打印堆栈时,我希望它没有 [] 大括号。 我应该在我的代码中进行哪些更改,或者我该如何做才能使输出看起来像我在下面显示的那样?

这是我现在的输出

t0   Pillar1: [3, 2, 1]
t0   Pillar2: []
t0   Pillar3: []

我希望它是:

t0 Pillar1: 3 2 1
t0 Pillar2:
t0 Pillar3:

这是我的代码

private int numberOfDisks;
    private int startPillar;
    private int targetPillar;
    private int extraPillar;
    
    private Stack<Integer>[] pillars = new Stack[3];
    private int steps;
    
    public Hanoi(int n, int start, int target)
    {
        numberOfDisks = n;
        startPillar = start-1;
        targetPillar = target;
        extraPillar = 6 - start - target;
        steps = 0;
        
        pillars[0] = new Stack<Integer>();
        pillars[1] = new Stack<Integer>();
        pillars[2] = new Stack<Integer>();

        for(int i = n; i > 0; i--)
        {
            pillars[startPillar].push(i);
        }
        printStep();
        
        
    }
    
    
    private void printStep()
    {
        for(int i=1;i<4;i++)
        {
            System.out.println("t"+steps+"   " + "Pillar" + (i) + ": " + pillars[i-1]);
        }
    }

【问题讨论】:

  • 您需要继承Stack 并覆盖其toString() 方法。

标签: java arrays stack towers-of-hanoi


【解决方案1】:

IMO 最快的方法是先将其放入字符串中

String result = pillars[i-1];
result = result.replace ("[", "").replace("]", "");
System.out.println("t"+steps+"   " + "Pillar" + (i) + ": " + result);

【讨论】:

  • 仍然用括号打印
  • 你确定吗?字符串的括号被替换了。
【解决方案2】:

使用Arrays.toString():

System.out.println(Arrays.toString(pillars.toArray()).replace("[","").replace("]",""));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2017-10-01
    • 2016-04-11
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多