我应该在哪里使用print和println语句在控制台窗口上绘制建筑物。假设建筑物的高度为2,那么它应该显示两层楼高,如下图所示。
输出
嗯,它看起来像是嵌套循环。我认为最外层的循环应该是故事的数量。在那个循环中有另一个窗口数量的循环,而另一个循环有多高,然后在里面,有多宽。 有谁能请举个例子怎么做?我知道我必须使用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 :(得分:0)
好的,当前循环,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
- 循环。