1. ホーム
  2. java

[解決済み] Java階段の印刷方向がおかしい(hackerrankさん)

2022-02-10 14:08:27

質問

この階段の解答は正しい出力をするが、方向が逆である。この解決策をどのように変更すれば望ましい結果が得られるか、何かアイデアはありますか?

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();
}
}

入力です。

6

期待される出力

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

実際の出力

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

hackerrankの簡単なチャレンジのためです。ただ、ネットで見つけた解決策ではなく、自分で発見したアプローチを使えるようにしたいんです。ありがとうございます。

どのように解決するのですか?

2つの変更を行うだけです。

まず、スペースを表示するループを追加する必要があります。もし、ループを 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");
   }
}  

出力する。

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

また、あなたのコードについてのメモです。を閉じるのはバッドプラクティスです。 System.in . 一般的なルールは、リソースを開いていない場合は、それを閉じてはいけません。