java帮助打印*和#成一个正方形

时间:2013-08-26 12:36:23

标签: java

//问题本身(我之后的代码)

变量n是随机生成的整数。输出字符'*'和'#',以便第一行仅包含星号,最后一行仅包含数字符号。每个连续行中的星数减少。一行中的字符总数为n,并且有n + 1行。

例如,如果n的值为5,程序将输出:

 *****  
 ****#    
 ***##      
 **###       
 *####      
 #####      

//我的代码在下面!

Random r = new Random();       
int n = r.nextInt(5) + 10;    
System.out.println("n: "+n);

while(n>0){

for(int star = n; star>0; star--){
  System.out.print("*");
}

for(int hash = 0; hash<n; hash++){
  System.out.print("#");

    } 

    System.out.println("");  //new line
n--;


}

//我的代码输出 - 问题:#需要从0增加而不是像*的那样减少

**********##########
*********#########
********########
*******#######
******######
*****#####
****####
***###
**##
*#

3 个答案:

答案 0 :(得分:2)

您需要做什么:

打印n个星星,0哈希 打印n-1个星标,1哈希 打印n-2星标,2哈希。

你在做什么:

打印n个星星,n哈希 打印n-1个星标,n-1哈希 打印n-2星标,n-2哈希。

(n到1与0到n-1的量相同)

所以这里自然要做的就是在循环外创建另一个变量来显示要打印的哈希数。

或者你可以记住原来的n,因为hash count = n - star count

我希望这对您的帮助不仅仅是为您提供代码。

答案 1 :(得分:0)

由于这看起来像是一个家庭作业,我不认为给你一个代码,这将是一个好主意,我会给你一个基本的想法。

要记住的是,您需要n作为最初的星数。每次循环计数器递增时,n递减以允许您再添加一个散列。那么,要添加的哈希的初始数量应该是多少?

答案 2 :(得分:0)

此作业的对象(以及所有其他作业)是将此问题分解为您可以解决的越来越小的作品。

试试这个:

  • 打印一行星号。
  • 打印一行星号,然后将一行星号与最后一个字符更改为哈希。
  • 打印一行星号,然后将一行星号与最后一个字符更改为哈希,然后将一行星号和最后两个字符更改为哈希。
  • 看看你的代码,看看如何把它放在一个n行的循环中。
  • 生成作业结果。

通过将问题分解为更简单,更简单的步骤,您将学习如何解决问题。