根据用户输入循环增量值

时间:2014-09-29 18:27:16

标签: java loops increment

我有一个基于用户输入的循环增量值的任务。

任务是在控制台中生成以下行

*
**
***
****
*****

行数由用户输入决定。即如果用户键入2,则会提供以下输出:

*
**

我目前的代码是:

import static javax.swing.JOptionPane.*;
public class loop1 {
    public static void main(String[] args){
        int current_line = 0;
        String input_line = showInputDialog("type here ");
        int target_line = Integer.parseInt(input_line);
        while (current_line != target_line){
            String sign = "*";
            System.out.println(sign);
            current_line ++;
        }
    }
}

但我似乎无法在每次运行时增加星号(*)的数量。我怎么能做到这一点?

4 个答案:

答案 0 :(得分:4)

您需要一个嵌套循环。外循环的每次迭代(这是你已经拥有的循环)将打印一行,内循环的每次迭代都会为当前行打印一个星号。

答案 1 :(得分:3)

你实际上需要两个循环,但你只有一个循环。你有一个while循环来打印出星号,但是你还需要一个循环来增加每次打印出的星号数。

某些伪代码可能如下所示:

For (int i = 1 to whatever value the user entered):
    For (int j = 1 to i):
        Print an asterisk

实际代码如下:

int numLines = Integer.parseInt(showInputDialog("type here "));
for(int numAsterisks = 0; numAsterisks < numLines; numAsterisks++) {
    for(int i = 0; i < numAsterisks; i++) {
        System.out.print("*");
    }
    System.out.println(); // Start a new line
}

答案 2 :(得分:1)

您可以使用嵌套for循环使其更简单。将您的循环修改为:

for (int i=0;i<target_line;i++) {
    for (int j=0;j<=i;j++) {
        System.out.print("*");
    }
    System.out.println();
}

答案 3 :(得分:0)

每次打印一次&#39; *&#39; -sign。 你不一定需要两个循环。您可以将符号放在循环外部,并且可以使用string.concat(&#34; *&#34;)在每次迭代时添加星号。连接实际上意味着将两个字符串合并为一个,因此您实际上将上一次迭代中的符号与新符号组合在一起。

int current_line = 0;
String input_line = showInputDialog("type here ");
int target_line = Integer.parseInt(input_line);
String sign = "*";
while (current_line != target_line){
    sign.concat("*");
    System.out.println(sign);
    current_line ++;
}