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”);
之后,除了您拥有的之外。不要编写,永远不要显示未记录和未注释的代码。输出中有空格,您不会在任何地方打印空格。