我正在尝试构建一个打印出简单图形的程序。该程序的目标是从用户输入中打印出带有与该数字相邻的相应数字的星号。

问题是我在向程序添加星号时遇到问题。

这是当前代码:

package exercise4.pkg16;

import java.util.Scanner;

public class Exercise416 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int numberCounter = 0;
        int number1;
        int number2;
        int number3;
        int number4;
        int number5;

        System.out.print("Please enter a number between 1 and 30: ");
        number1 = input.nextInt();

        System.out.print("Please enter a number between 1 and 30: ");
        number2 = input.nextInt();

        System.out.print("Please enter a number between 1 and 30: ");
        number3 = input.nextInt();

        System.out.print("Please enter a number between 1 and 30: ");
        number4 = input.nextInt();

        System.out.print("Please enter a number between 1 and 30: ");
        number5 = input.nextInt();

        while (numberCounter <= 5)
        {
            numberCounter = numberCounter +1;
        }

        System.out.printf("%d%n", number1);
        System.out.printf("%d%n", number2);
        System.out.printf("%d%n", number3);
        System.out.printf("%d%n", number4);
        System.out.printf("%d%n", number5);
    }
}


这是理想的结果:

1*
2**
10**********
7*******
5*****


有谁可以帮助我吗?

谢谢。

最佳答案

首先,使用数组存储结果,并使用while循环重用一些代码:

int[] numbers = new int[5];

while (numberCounter <= 5) {
    System.out.print("Please enter a number between 1 and 30: ");
    numbers[numberCounter] = input.nextInt();
    numberCounter ++;
}


之后,您必须遍历结果:

String asterisk = "*";
for (int i = 0; i < numbers.lenght; i++){
    System.out.println(numbers[i] + StringUtils.repeat(asterisk, numbers[i]));
}


注意:StringUtils.repeat与此for-loop相同:

for(int c = 0; i < numbers[i]; i++)
    System.out.print(asterisk);

10-07 13:57
查看更多