使用循环计数器打印出使用 2 个变量的模式



基本上,我正在尝试使程序接受1到10之间的整数以及字母字符。然后,它根据此值作为最大宽度输出适当的模式

例如,用户输入一个整数 5 和一个字母 X,程序打印出来:

x

xx

三十

三xxx

三xxxx

似乎无法让它打印出任何东西,以下是我到目前为止所拥有的......任何提示都非常感谢!

import java.util.*;
public class pattern {
    public static void main(String[] args) {
        int New1 = 1, Linecounter = 1;

        Scanner sc = new Scanner(System.in);
        int Number = sc.nextInt();
        if (Number >= 1 &&  Number <= 10) {
            Number = New1;
        }
            else{
            System.out.println("Error: Enter a number between 1 and 10");
        }
        Scanner keyboard = new Scanner(System.in);
        char letter = keyboard.next().charAt(0);
        for (New1 = 1; New1 <= 10; New1++) {
            for (letter = (char) Linecounter; letter <= 10; letter++) {
                System.out.print("" +letter+ ""); 
            }
            System.out.println();
        }}}

首先:

if (Number >= 1 &&  Number <= 10) {
            Number = New1;
        }

集合数 = 1。 执行此代码后,Number 和 New1 都等于 1。 您想要将数字设置为输入的内容。 现在循环需要工作。 你应该有这样的东西:

for (int i = 1; i <= Number; i++) { //1 through Number
   for (int j = 1; j <= i; j++) {
      System.out.print(letter); //Print letter i times
   }
   System.out.print("n"); //New line
}

是这样的东西,你正在寻找吗?

int x = 5;
char letter = 'x';
for (int i = 0; i <= x; i++)
{
    for (int j = 0; j < i; j++)
    {
        System.out.print(letter);
    }
    System.out.println();
}

以上输出

x
xx
xxx
xxxx
xxxxx

这似乎是家庭作业,所以我只给你带来伪代码。这个想法是做这样的事情:

for i in 1..x do
    for j in 1..i do
        print ('*')
    end
    println (''
end

(事实上,如果您更改putsprintln,这将成为一个有效的 Ruby 脚本)。

无论如何,这里的关键是:您需要与用户输入的行一样多的星号。只要您在内部循环中打印星号而不打印换行符,并在外部循环中调用println,就可以了。同样重要的是,向上迭代到外部循环中的所需值,但只能迭代到内部循环中的New1变量。

试试这个:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Integer: ");
    int userInt = scan.nextInt();
    System.out.print("Letter: ");
    String userLetter = scan.next();
    String letter = "";
    for (int i = 0; i <= userInt; i++) {
        System.out.println(letter);
        letter += userLetter;
    }
}

这不会将输入限制在 1-10 之间,您可以为此添加一点if语句。

最新更新