4

预期输出如下:

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

4 回答 4

5

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

str += i % 10;
于 2013-05-14T23:36:41.140 回答
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);
    }
}
于 2013-05-14T23:32:43.877 回答
0

解决方案:

IntStream.rangeClosed(1, MAX)
                .forEach(i -> IntStream.rangeClosed(1, i)
                        .mapToObj(j -> j == i ? j % 10 + "\n" : j % 10 + " ")
                        .forEach(System.out::print)
                );
于 2016-05-11T09:28:02.367 回答
-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
             }
         }

    }
}
于 2015-12-15T16:47:43.923 回答