2014-09-29 64 views
1

我有一個基於用戶輸入的循環增量值任務。基於用戶輸入循環顯示增量值

的任務是,下面的線在控制檯

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

和線的量是由用戶輸入產生的決定。即如果用戶在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 ++; 
     } 
    } 
} 

但我似乎無法得到星號的數量(*),以增加每它運行的時間。我怎樣才能做到這一點?

+1

(它會更容易下手爲'(;;)'循環在這個問題)。 – user2864740 2014-09-29 18:29:31

+0

我真的建議在看這個http://mathbits.com/MathBits/Java/Looping/NestedFor .htm這是我會用的。 – StephenButtolph 2014-09-29 18:30:16

回答

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

你需要一個嵌套循環。外循環的每次迭代(它是您已有的循環)將打印一行,並且內循環的每次迭代都會爲當前行打印一個星號。

1

可以通過使用嵌套for循環使其更簡單。修改您的循環爲:

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

您每次打印一個'*' - 符號。 你不一定需要兩個循環。您可以將符號放置在循環外部,並且可以使用string.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 ++; 
}