2014-02-24 117 views
1

我应该在哪里使用print和println语句在我的控制台窗口上绘制建筑物。假设建筑物的高度为2,那么它应该显示如下所示的两层高的建筑物。试图制作建筑物

输出

enter image description here

好了,它看起来对我来说,它的嵌套循环。我认为最外层的循环应该是故事的数量。在那个循环中有多个窗口的循环,在另一个循环中它有多高,然后在内部有多宽。 任何人都可以请给我一个例子如何做到这一点?我知道我必须使用for循环。

import java.util.Scanner; 
public class BuildingAssign { 

    public static void main (String [] args){ 

     int input; 
     int stories; 
     int windows; 
     int wide; 
     int tall; 
     final int MAXSTORIESHIGH= 4; 
     final int MINSTORIESHIGH = 1; 
     final int MAXWINDOWS = 16; 
     final int MINWINDOWS = 2; 
     final int MAXWIDE = 4; 
     final int MINWINDE = 3; 
     final int MAXTALL = 4; 
     final int MINTALL =3 ; 

     Scanner in = new Scanner(System.in); 

     do { 
      System.out.print("How many stories high the building will be? (1-4): "); 
      stories = in.nextInt(); 
     }while (stories < MINSTORIESHIGH || stories > MAXSTORIESHIGH); 

     do { 
      System.out.print("How many windows on each story? (2-16): "); 
      windows = in.nextInt(); 
     }while (windows < MINWINDOWS || windows > MAXWINDOWS); 

     if (stories < 2){ 
      System.out.print("It won't work"); 

     } 

     do { 
      System.out.print("How wide each window will be? (3-4): "); 
      wide = in.nextInt(); 
     }while (wide < MINWINDE || wide > MAXWIDE); 

     do { 
      System.out.print("How tall each window will be? (3-4): "); 
      tall = in.nextInt(); 
     }while (tall < MINTALL || tall > MAXTALL); 

     for (; stories == 1; stories++){ 
      System.out.println("***********\n*   *\n*   *\n*   *\n*   *\n*   *\n***********"); 
      System.exit(0); 
     } 
     for (; stories == 2; stories++){ 
      System.out.println("***********\n*   *\n*   *\n*   *\n*   *\n*   *\n***********   \n*   *\n*   *\n*   *\n*   *\n*   *\n***********"); 
      System.exit(0); 
     } 
     for (; stories == 3; stories++){ 
      System.out.println("***********\n*   *\n*   *\n*   *\n*   *\n*   *\n***********   \n*   *\n*   *\n*   *\n*   *\n*   *\n***********   \n*   *\n*   *\n*   *\n*   *\n*   *\n***********"); 
      System.exit(0); 
     } 
     for (; stories == 4; stories++){ 
      System.out.println("***********\n*   *\n*   *\n*   *\n*   *\n*   *\n***********   \n*   *\n*   *\n*   *\n*   *\n*   *\n***********   \n*   *\n*   *\n*   *\n*   *\n*   *\n***********   \n*   *\n*   *\n*   *\n*   *\n*   *\n***********"); 
      System.exit(0);  
     } 
    } 
} 
+0

你到目前为止尝试过什么。你在正确的轨道上。现在尝试编写'for'循环,向我们展示您尝试的内容,我们可以帮助您改进或修复问题。 –

+0

固定。但我不知道这是如何做到这一点..如何使窗户? – edwardpark

回答

0

OK,电流回路中,System.out.println报表和这些System.exit声明并不完全正确......

你必须要考虑,你不能绘制一个窗口,然后绘制一个向左或向右的第一个。当您打印像

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

,那么你可以再继续只和打印像

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

左右,这是不是你想要的。根据窗户的高度,根据窗户的宽度和数量以及每个楼层的高度,您还必须知道整个建筑物的宽度。

也许这个伪(*)的代码给出了一个基本思路:

for (int s=0; s<stories; s++) 
{ 
    printTopRowOfStory(totalBuildingWidth);  // *********** 
    printWalls(totalBuildingWidth);    // *   * 
    printWindowBorders(windows, wide);    // * *** *** * 
    for (int h=0; h<tall; h++)   
    {            
     printInnerWindowBorders(windows, wide); // * * * * * * 
    } 
    printWindowBorders(windows, wide);    // * *** *** * 
    printWalls(totalBuildingWidth);    // *   * 
} 
printFloor(totalBuildingWidth);     // *********** 

(*),这是不是真的伪代码。你可以像这样真正实现它。特别是,每个与窗口相关的方法都将包含另一个for -loop。

+0

谢谢你的帮助!但你能解释这是如何工作的吗? – edwardpark

+0

这些方法实际上并不存在,但他向你展示了你的代码应该做什么以及以什么顺序的一般概述。它应该可以帮助你开始实际的实施。 –

+0

@ user3268146如果(且仅当)表明您确实在尝试解决任务,并且您有特定问题,我会尽力帮助您。 – Marco13