2013-10-01 46 views
-1

对不起措辞不佳的问题,今天早上我很匆忙,因为课程结束了。打印星号-java/text files

-

final int maxS = height; 
for (int row = 1; row <= maxS; row ++) 
{ 
    for (int star = 1; star <= maxS; star++) 
     System.out.print("* "); 
    System.out.println(); 
} 

我需要这是输出:

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

所以高度的行数,这是5我能得到这个

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

使用类似于上面的代码,但它不适用于我。我试图得到相反的结果,但没有奏效。

+0

你得到一个正方形,对不对?为第一个版本尝试'star <=(maxS - row + 1)',为第二个版本尝试'star <= row'。 – Thomas

+9

这似乎是一个懒惰的尝试在_easy_家庭作业...代码几乎没有问题,只有小的事情要改变那里。如果您参加了课程,解读您所看到的代码应该不会很困难。理解它,用简单的英语(或者你的母语,甚至更好)写出来,然后看看它需要调整的地方。 – ppeterka

回答

1

尝试:

int maxS = height; 
for (int row = 1; row <= maxS; row ++) 
{ 
    for (int star = maxS - row + 1; star >= 1; star--) 
    System.out.print("* "); 
    System.out.println(); 
} 

你必须想一步一步来。每个外部循环和每个内部循环会发生什么?其实很简单。如果你不能工作,你应该手动通过纸上的每个循环。你希望它在每次迭代中减少,所以你必须使用--而不是++

1

与您实际的代码,你会得到一个广场,这里是你如何能实现它的一个例子:

for (int row = maxS; row >= 1; row--) 

和第二for

我换成第一for由:

for (int star = 1; star <= row; star++) 

 

public static void main(String[] arv) throws Exception { 
    final int maxS = height; 
    for (int row = maxS; row >= 1; row--) { 
     for (int star = 1; star <= row; star++) { 
      System.out.print("* "); 
     } 
     System.out.println(); 
    } 
} 
2

试试这个:

final int maxS = 10; 

    for (int row = 1; row <= maxS; row ++) { 
     for (int star=maxS; star >= row; star--) { 
      System.out.print("* "); 
     } 
     System.out.println(); 
    }