Java楼梯打印方向错误(hackerrank)

Java楼梯打印方向错误(hackerrank),java,algorithm,data-structures,Java,Algorithm,Data Structures,楼梯的此解决方案打印正确的输出,但方向相反。你知道如何改变这个解决方案以获得想要的结果吗 import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { // Complete the stai

楼梯的此解决方案打印正确的输出,但方向相反。你知道如何改变这个解决方案以获得想要的结果吗

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {

// Complete the staircase function below.
static void staircase(int n) {
int counter=0;
    for(int i=0; i<n;i++)
    {
        //for (int k=0; k<n-k-1;k++)
        //  {
        //      System.out.println("");
        //  }
        System.out.print("\n");
        System.out.print("#");
        counter++;

        for(int j=0; j<counter-1;j++) 
        {

            System.out.print("#");
        }
    }   
}

private static final Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    int n = scanner.nextInt();
    scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

    staircase(n);

    scanner.close();
}
}
预期产出:

     #
    ##
   ###
  ####
 #####
######
实际产量:

#
##
###
####
#####
######

这是一个简单的挑战。我只是希望能够使用我发现的方法,而不是在线找到的解决方案。谢谢

您只需做两个更改:

首先,您必须添加一个将打印空格的循环。如果从
n
开始循环,直到大于或等于
i
,同时进行减法运算,这将打印正确的空格数

其次,您需要在循环的末尾添加换行符:

static void staircase(int n) {

   int counter=0;
   for(int i=0; i<n;i++)
   {
       counter++;
       for(int k=n; k>= i;k--)
       {
           System.out.print(" "); 
       } 
       for(int j=0; j<=counter-1;j++) 
       {
           System.out.print("#");
       }

       System.out.print("\n");
   }
}  

也只是一个关于代码的注释。在中关闭
系统是不好的做法。一般规则是,如果未打开资源,则不应将其关闭。

您只需进行两项更改:

首先,您必须添加一个将打印空格的循环。如果从
n
开始循环,直到大于或等于
i
,同时进行减法运算,这将打印正确的空格数

其次,您需要在循环的末尾添加换行符:

static void staircase(int n) {

   int counter=0;
   for(int i=0; i<n;i++)
   {
       counter++;
       for(int k=n; k>= i;k--)
       {
           System.out.print(" "); 
       } 
       for(int j=0; j<=counter-1;j++) 
       {
           System.out.print("#");
       }

       System.out.print("\n");
   }
}  

也只是一个关于代码的注释。在
中关闭
系统是不好的做法。一般规则是,如果您没有打开资源,就不应该关闭它。

无需使用额外的
计数器
变量。试试这个:

static void printStaircase(int n) {
    if (n < 0) {
        return;
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n - i; ++j) {
            System.out.print('\u00a0'); // nbsp
        }
        for (int j = n - i + 1; j <= n; ++j) {
            System.out.print('#');
        }
        System.out.println();
    }
}
static void打印楼梯(int n){
if(n<0){
返回;
}

对于(int i=1;i无需使用额外的
计数器
变量。只需尝试以下操作:

static void printStaircase(int n) {
    if (n < 0) {
        return;
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n - i; ++j) {
            System.out.print('\u00a0'); // nbsp
        }
        for (int j = n - i + 1; j <= n; ++j) {
            System.out.print('#');
        }
        System.out.println();
    }
}
static void打印楼梯(int n){
if(n<0){
返回;
}
对于(inti=1;i另一个命题:

static void staircase(int n) {
    for(int i=n; i> 0; i--) {
        String s= "";
        for(int j=1; j<=n-i+1; j++) s+="#";
        System.out.printf("%"+n+"s\n", s);

    }
}
静态空心楼梯(int n){
对于(int i=n;i>0;i--){
字符串s=“”;
对于(int j=1;j另一个命题:

static void staircase(int n) {
    for(int i=n; i> 0; i--) {
        String s= "";
        for(int j=1; j<=n-i+1; j++) s+="#";
        System.out.printf("%"+n+"s\n", s);

    }
}
静态空心楼梯(int n){
对于(int i=n;i>0;i--){
字符串s=“”;

对于(int j=1;j这应该可以

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

}
静态空心楼梯(int n){
字符串p=“”;
对于(int i=0;i
这应该有效

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

}
静态空心楼梯(int n){
字符串p=“”;
对于(int i=0;i
这是一种非常简单的方法-

for (int i = 1; i <= n; i++) 
    {
      System.out.println(new String(new char[n-i]).replace("\0", " ") + new String(new char[i]).replace("\0", "#"));
    }

for(inti=1;i非常简单且简单的方法-

for (int i = 1; i <= n; i++) 
    {
      System.out.println(new String(new char[n-i]).replace("\0", " ") + new String(new char[i]).replace("\0", "#"));
    }
for(inti=1;i和另一种方法

fun staircase(n: Int): Unit {
    for (i in 1..n) {
        print(" ".repeat(n-i))
        println("#".repeat(i))
    }
}
还有另一种方式

fun staircase(n: Int): Unit {
    for (i in 1..n) {
        print(" ".repeat(n-i))
        println("#".repeat(i))
    }
}
公共静态无效楼梯(int n){
int计数器=0;
对于(int i=1;i=i;x--){
系统输出打印(“”);
}
对于(int j=0;j
公共静态空心楼梯(int n){
int计数器=0;
对于(int i=1;i=i;x--){
系统输出打印(“”);
}

for(int j=0;j在打印
#
之前,请打印
n-i-1
空格。@Johnnymop您能再澄清一下我应该把它放在我的解决方案中的什么地方吗?在两个for循环的上面?代替其中一个for循环?试着放在
System.out.print(“\n”)之后
,除了你所拥有的。不要写,永远不要呈现未记录和未注释的代码。输出中有空格,你不能在任何地方打印空格。在打印
之前,请打印
n-i-1
空格。@Johnnymapp你能再澄清一点我应该把它放在我的解决方案中的什么地方吗?在这两者之上对于for循环?代替其中一个for循环?尝试将其放在
System.out.print(“\n”);
之后,除了您拥有的之外。不要编写,永远不要显示未记录和未注释的代码。输出中有空格,您不会在任何地方打印空格。