有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于用户输入的增量值java循环

我有一项任务,是关于基于用户输入的循环中的增量值

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

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

行数由用户输入决定。也就是说,如果用户输入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) 个答案

  1. # 1 楼答案

    通过使用嵌套for循环,可以使其更简单。将循环修改为:

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

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

  3. # 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
    }
    
  4. # 4 楼答案

    每次打印一个“*”-签名。 你不一定需要两个循环。你可以把符号放在循环之外,你可以在每次迭代中用字符串加一个星号。concat(“*”)。连接实际上意味着将两个字符串合并为一个字符串,因此实际上将上一次迭代中的符号与新符号合并

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