这种对楼梯的解决方案可打印正确的输出,但方向相反。任何想法如何更改此解决方案以获得所需的结果?
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的简单挑战。我只希望能够使用自己发现的方法,而不是在线找到的解决方案。谢谢!
答案 0 :(得分: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
是错误的做法。一般规则是,如果您没有打开资源,则不应关闭它。
答案 1 :(得分:1)
无需使用额外的counter
变量。只需尝试:
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();
}
}
答案 2 :(得分:0)
另一个命题:
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);
}
}
答案 3 :(得分:0)
这应该有效
static void staircase(int n) {
String p = "";
for(int i = 0 ; i< n ; i++){
p = p + "#";
System.out.printf("%"+n+"s\n", p);
}
}
答案 4 :(得分:0)
非常简单快捷的方法-
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", "#"));
}
答案 5 :(得分:0)
另一种方式
fun staircase(n: Int): Unit {
for (i in 1..n) {
print(" ".repeat(n-i))
println("#".repeat(i))
}
}
答案 6 :(得分:0)
public static void staircase(int n) {
int counter = 0;
for (int i = 1; i <= n; i++) {
counter++;
for (int x = n-1; x >= i; x--) {
System.out.print(" ");
}
for (int j = 0; j <= counter - 1; j++) {
System.out.print("#");
}
if (i != n) {
System.out.println();
} else {
System.out.print("");
}
}
}