2015-02-10 100 views
0

我想弄清楚为什么我的钻石并没有完全形成在底部。当用户输入任何大于三的奇数时,钻石在底部不能正确地形成(它仅在最大中线后面打印一行)。它看起来像这样(我想在这个例子中五行):如何在爪哇形成钻石

* 
    * * 
    * * * 
    * * 

我相信有什么毛病了对于被认为创造了钻石底环。代码为:

//bottom of the diamond 
    for(j = (in + 1)/2; j < in; j++){ //similar to the first for statement instead when j equals the user's input plus one divided by two it will then go to the next for loop (the diamond starts to shrink) 
     for(i = 1; i < j; i++){ //when i equals one, and j is greater than one 
      System.out.print(" "); //prints space 
     } 
     for(l = 0; l < in - j; j++){ //similar to the for loop that prints the asterisk to the left this for loop goes through when l equals zero, and this time is less than the user's input minus j 
      System.out.print(" *"); //prints the bottom asterisks 
     } 
     System.out.println(""); //starts another blank new line 
    } //just like the top section it keeps looping until the requirements are no longer met 

我在做什么错了?

+5

'l = 0; l 2015-02-10 22:12:20

+0

谢谢你的纠正(惊讶我错过了那个错字)! – Fyree 2015-02-10 22:17:44

回答

0

尽管Lashane在他的评论中指出了直接的问题,但我注意到你的逻辑比需要的更复杂。

所以,在回答你的问题

我在做什么错?

允许我提供一个较少混淆的实现,该实现使用相同的循环体代码钻石的顶部和底部。

int in = 5; 
for (int j = 1; j <= in; j++) { 
    for (int i = 0; i < in - j; i++) { 
    System.out.print(" "); 
    } 
    for (int i = 0; i < j; i++) { 
    System.out.print(" *"); 
    } 
    System.out.println(""); 
} 
for (int j = in - 1; j >= 1; j--) { 
    for (int i = 0; i < in - j; i++) { 
    System.out.print(" "); 
    } 
    for (int i = 0; i < j; i++) { 
    System.out.print(" *"); 
    } 
    System.out.println(""); 
} 

现在两个for环路之间的唯一区别是,第一计数了从1in和第二计数回落从in - 11

+0

有趣的是,我将不得不尝试一下,谢谢你的信息! – Fyree 2015-02-11 03:24:52