1

我需要使用 Java 正确证明下一个输出:

class MyTree {

    public static void staircase(int n) {
        String myGraph = "#";
        for(int i=0; i<n; i++){
            for(int x = 0; x <=i; x++){
                if(x == i){
                    System.out.printf("%s\n", myGraph);
                }else{
                    System.out.printf("%s", myGraph);                    
                }
            }
        }
    }
}

我正在使用 printf 函数,但我被卡住了,我尝试了不同的参数,但似乎没有任何效果;如果您有任何建议,请告诉我。

谢谢

4

4 回答 4

1

除非您知道一条线的“长度”,否则您无法正确证明,而且没有办法知道这一点。并不是所有的事物System.out都可以连接起来有这样的概念。

如果你事先知道,你可以使用%80s例如。如果你不这样做,你想要的就是不可能的。

于 2021-09-30T17:07:26.113 回答
0

这可以通过字符串格式实现。

看看这个链接阅读更多

于 2021-09-30T17:20:15.757 回答
0

这种方法解决了问题:

class Result {
    public static void staircase(int n) {
        String myGraph = "#";
        String mySpace = " ";
        int numOfChars = 0;
        int i = 0;
        int j = 0;
        int k = 0;
        ArrayList<ArrayList<String>> gameBoard = new ArrayList<ArrayList<String>>();
        for(i=0; i<n; i++){
            gameBoard.add(new ArrayList<String>());
            numOfChars++;
            //fill of mySpace
            for(j=0; j<(n-numOfChars); j++){
                gameBoard.get(i).add(j, mySpace);
            }
            //fill of myGraph
            for(k=j; k<n; k++){
                gameBoard.get(i).add(k, myGraph);
            }
        }
        
        //iterate the list
        for (i = 0; i < gameBoard.size(); i++){
            for (j = 0; j < gameBoard.get(i).size(); j++){
                System.out.print(gameBoard.get(i).get(j));
            } 
            System.out.println();
        }        
    }
}
于 2021-10-01T18:33:32.683 回答
0

这是不可能的,java 输出流是如此抽象,以至于您基本上不知道您发送给它的数据在哪里结束。
案例场景:
有人将输出流设置为一个文件,那里会有正确的对齐方式?

于 2021-09-30T17:08:27.900 回答