简体   繁体   中英

Pyramid Pattern using a Loop

The expected output is as follows:

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

Following is the starting code I would use:

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);
        }
    }
}

Following is my output as of now.

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

I've been thinking about how to resolve this issue; if I write an If statement if(i > 9){ i = 0; } if(i > 9){ i = 0; } . But that would reset my counter?

How can I accomplish this task ? What am I missing ?

您可以使用模运算符使i到达10时返回到0:

str += i % 10;

All you need to use the % modulo operator and the thing will work up to any number.

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);
    }
}

solution:

IntStream.rangeClosed(1, MAX)
                .forEach(i -> IntStream.rangeClosed(1, i)
                        .mapToObj(j -> j == i ? j % 10 + "\n" : j % 10 + " ")
                        .forEach(System.out::print)
                );
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
             }
         }

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM