我有一个基于用户输入的循环增量值的任务。
任务是在控制台中生成以下行
*
**
***
****
*****
行数由用户输入决定。即如果用户键入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 ++;
}
}
}
但我似乎无法在每次运行时增加星号(*)的数量。我怎么能做到这一点?
答案 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 ++;
}