-4

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

变量 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 开始增大,而不是像 * 那样减小

**********##########
*********#########
********########
*******#######
******######
*****#####
****####
***###
**##
*#
4

3 回答 3

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

我希望这不仅仅对您提供代码有所帮助。

于 2013-08-26T13:00:27.760 回答
0

这个作业(以及所有其他作业)的目的是把这个问题分解成你可以解决的越来越小的部分。

尝试这个:

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

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

于 2013-08-26T12:45:16.553 回答
0

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

要记住的是,您需要n成为初始星数。每次循环计数器增加时,它都会n减少以让您再添加一个哈希值。那么,要添加的初始哈希数应该是多少?

于 2013-08-26T12:40:59.880 回答