使用循环在每个数字之间添加空格?

时间:2017-02-16 23:41:27

标签: java for-loop nested

我正在尝试输出一行,看起来有点像这样:

1 2  3   4    5     6      7       8        9 

每次数量增加时添加另一个空格。 我需要使用for循环,首选嵌套for循环。 到目前为止,这是我的代码(在运行时,即使使用方法调用也不会打印。)

public static void outputNine()
{
    for(int x=1; x<=9; x++)
    {
        for(char space= ' '; space<=9; space++)
        {
            System.out.print(x + space);
        }
    }
}

我知道我做错了什么,但我对java很新,所以我不太确定是什么。谢谢你的帮助。

5 个答案:

答案 0 :(得分:2)

您只能初始化space一次,然后打印数字,并为每个数字打印空格:

char space = ' ';
for(int x=1; x<=9; x++)
{
    System.out.print(x);
    for(int i = 0 ; i < x ; i++)
    {
        System.out.print(space);
    }
}

答案 1 :(得分:0)

您的循环使用的是' '的ASCII值,这不是您想要的。您只需要计算当前的x。用这个替换你的内循环:

System.out.print(x);
for (int s = 0; s < x; s++) {
    System.out.print(" ");
}

答案 2 :(得分:0)

现在你正试图增加一个字母,这没有意义。您希望{{1}}是一个等于您需要的空格数的数字。

答案 3 :(得分:0)

你只需要一个循环。

参考:Simple way to repeat a String in java

for (int i = 1; i <= 9; i++) {
    System.out.printf("%d%s", i, new String(new char[i]).replace('\0', ' '));
}

输出

1 2 3 4 5 6 7 8 9

或者更优化,

int n = 9;
char[] spaces =new char[n];
Arrays.fill(spaces, ' ');
PrintWriter out = new PrintWriter(System.out);

for (int i = 1; i <= n; i++) {
    out.print(i);
    out.write(spaces, 0, i);
}
out.flush();

答案 4 :(得分:0)

将该行视为由相同结构的9个部分组成:x-1空格后跟x,其中x从1更改为9。

/*
0 space + "1"
1 space + "2"
2 spaces + "3"
...
*/

int n = 9;
for (int x = 1; x <= n; x++) {
    // Output x - 1 spaces
    for (int i = 0; i < x - 1; i++) System.out.append(' ');
    // Followed by x
    System.out.print(x);
}

这种方法的一个好处是你没有尾随空格。