我的HackerRank StairCase挑战代码有什么问题?

时间:2016-02-16 06:12:47

标签: java

这是我在Java中的主要方法

public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            //n is the number of height
            int n = in.nextInt();
            int j = 0;
            int k = 0;
            for (int i = 0; i < n; i++)
                {
                //print out spaces
                while(j < n - i)
                    {
                    System.out.print(" ");
                    j++;
                }
                while(k < (n - j + 1))
                    {
                    System.out.print("#");
                    k++;
                }
                System.out.println();
                j = 0;
                k = 0;
            }
        }

2 个答案:

答案 0 :(得分:0)

您也在为最后一行打印空间。 您可以用其他可见字符替换空格并检查输出。 这是公认的解决方案。

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

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(j>=n-i+1)
                    System.out.print("#");
                else System.out.print(" ");

            }
            System.out.println();
        }



    }
}

答案 1 :(得分:0)

您可以尝试使用此代码。它收集整个字符串并在最后打印它。

    static void Main(string[] args)
    {
        int _n;
        _n = Convert.ToInt32(Console.ReadLine());

        StairCase(_n);
    }

    static void StairCase(int n)
    {
        string s = "";

        if (n > 0 && n < 101)
        {
            for (int i = 0; i < n; i++)
            {
                s = StairCase(s, i + 1);
                if (i + 1 < n)
                {
                    s += string.Format("\n");
                }
            }
        }

        Console.WriteLine(s);
        Console.ReadLine();
    }

    private static string StairCase(string s, int n)
    {
        int c = n;
        while (c > 0)
        {
            s += string.Format("#");
            c = c - 1;
        }
        return s;
    }