使用圈的金字塔样式

时间:2013-05-14 23:29:28

标签: java variables if-statement for-loop auto-increment

预期输出如下:

1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890
12345678901
123456789012

以下是我将使用的起始代码:

import java.util.Scanner;

public class Pyramid {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Type in an integer value");
        Scanner in = new Scanner(System.in);
        int input = in.nextInt();
        String str = "";
        for(int i=1;i<=input;i++){
            str += i;
            System.out.println(str);
        }
    }
}

以下是截至目前的输出。

Type in an integer value
15
1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910
1234567891011
123456789101112
12345678910111213
1234567891011121314
123456789101112131415

我一直在考虑如何解决这个问题;如果我写一个If语句if(i > 9){ i = 0; }。但那会重置我的柜台吗?

我该如何完成这项任务? 我错过了什么?

4 个答案:

答案 0 :(得分:5)

一旦达到10,你可以使用模运算符使i循环回0:

str += i % 10;

答案 1 :(得分:2)

您只需要使用%模运算符,该东西就可以使用任何数字。

public static void main(String[] args) throws IOException {
    System.out.println("Type in an integer value");
    Scanner in = new Scanner(System.in);
    int input = in.nextInt();
    String str = "";
    for (int i = 1; i <= input; i++) {
        str += i % 10;
        System.out.println(str);
    }
}

答案 2 :(得分:0)

解决方案:

IntStream.rangeClosed(1, MAX)
                .forEach(i -> IntStream.rangeClosed(1, i)
                        .mapToObj(j -> j == i ? j % 10 + "\n" : j % 10 + " ")
                        .forEach(System.out::print)
                );

答案 3 :(得分:-1)

public class counter1 
{                           
    public static void main(String[] args) 
    {// TODO Auto-generated method stub
        while(true)                                 //keep repeating code
        {
            System.out.println("Enter Number...");
            Scanner number = new Scanner(System.in);
            int repeat = number.nextInt();          //input number
            int c = 1;                              //start counting at 1
            while (c<=repeat)                       //count vertically if this if true
            {
                int a = 1;                          //always start each count from 1
                do
                {
                    System.out.print(a + " ");      //print number and a space horizontally
                    a++;                            //increment horizontal numbers by 1
                }   while (a<=c);                   //check if the final number on          horizontal line is less max, if max-exit loop
                c++;                                    
                System.out.println();               //line break
             }
         }

    }
}