java 的房屋绘图(控制台)
House Drawing with java (console)
我必须编写一个程序,要求用户输入高度和长度(均为偶数),然后程序将绘制一个房子。房子的屋顶有(width/2)行。示例程序应如下所示:
Enter height and width of the house you want me to draw (must be even numbers): 10 10
....**
.../..\
../....\
./......\
/........\
----------
|........|
|........|
|........|
|........|
|........|
|........|
|........|
|........|
|........|
|........|
----------
但这就是我一直在为屋顶做的,使用 10 和 10 作为宽度和高度(我还没有开始主体):
height: 10
width: 10
....**
.../..\
.../..\
.../..\
.../..\
----------
有谁知道我如何放置正确数量的 space 以使其看起来像样本? 我的代码是:
import java.util.Scanner;
public class QuestionCode {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int height = 0, width = 0;
String space = ".", left = "/", right = "\";
System.out.print("height: ");
height = keyboard.nextInt();
System.out.print("width: ");
width = keyboard.nextInt();
System.out.println();
int outerSpace = ((width/2)-1);
int halfWidth = ((width/2)-2);
while (outerSpace > 0) {
System.out.print(space);
--outerSpace;
}
System.out.println("**");
while (halfWidth >= 0) {
outerSpace = ((width/2)-2);
while (outerSpace > 0) {
System.out.print(space);
--outerSpace;
}
System.out.print(left);
int innerSpace = 2;
while (innerSpace < (width-2)) {
System.out.print(space);
innerSpace *= 2;
}
System.out.println(right);
halfWidth--;
}
while (width > 0) {
System.out.print("-");
--width;
}
}
}
在下面你会找到一个使用 for
循环来完成它的命题。
这种类型的练习效率更高,因为您事先知道要循环多少次。
基本上,除了 width
和 height
之外,我还使用了另外两个变量:
heightRoof
: 想知道我的屋顶有多少行。
middle
: 知道在停止前我必须在第一行画多少点。
从那里开始,使用嵌套循环是可行的方法,因为我们确切地知道我们想要多少点和多少行,剩下的就是逻辑思维。
int width = 10;
int height = 10;
int middle = width % 2 == 0 ? (width / 2) - 1 : width / 2;
int heightRoof = middle+1;
for (int i = 0 ; i < heightRoof ; i++){
for (int j = middle - i - 1 ; j >= 0 ; j--){
System.out.print(".");
}
if (i == 0) {
System.out.print("**");
System.out.println();
continue;
} else {
System.out.print("/");
for (int k = 0 ; k < 2*i ; k++){
System.out.print(".");
}
}
System.out.print("\");
System.out.println();
}
for (int i = 0 ; i < width ; i++){
System.out.print("-");
}
我必须编写一个程序,要求用户输入高度和长度(均为偶数),然后程序将绘制一个房子。房子的屋顶有(width/2)行。示例程序应如下所示:
Enter height and width of the house you want me to draw (must be even numbers): 10 10
....**
.../..\
../....\
./......\
/........\
----------
|........|
|........|
|........|
|........|
|........|
|........|
|........|
|........|
|........|
|........|
----------
但这就是我一直在为屋顶做的,使用 10 和 10 作为宽度和高度(我还没有开始主体):
height: 10
width: 10
....**
.../..\
.../..\
.../..\
.../..\
----------
有谁知道我如何放置正确数量的 space 以使其看起来像样本? 我的代码是:
import java.util.Scanner;
public class QuestionCode {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int height = 0, width = 0;
String space = ".", left = "/", right = "\";
System.out.print("height: ");
height = keyboard.nextInt();
System.out.print("width: ");
width = keyboard.nextInt();
System.out.println();
int outerSpace = ((width/2)-1);
int halfWidth = ((width/2)-2);
while (outerSpace > 0) {
System.out.print(space);
--outerSpace;
}
System.out.println("**");
while (halfWidth >= 0) {
outerSpace = ((width/2)-2);
while (outerSpace > 0) {
System.out.print(space);
--outerSpace;
}
System.out.print(left);
int innerSpace = 2;
while (innerSpace < (width-2)) {
System.out.print(space);
innerSpace *= 2;
}
System.out.println(right);
halfWidth--;
}
while (width > 0) {
System.out.print("-");
--width;
}
}
}
在下面你会找到一个使用 for
循环来完成它的命题。
这种类型的练习效率更高,因为您事先知道要循环多少次。
基本上,除了 width
和 height
之外,我还使用了另外两个变量:
heightRoof
: 想知道我的屋顶有多少行。
middle
: 知道在停止前我必须在第一行画多少点。
从那里开始,使用嵌套循环是可行的方法,因为我们确切地知道我们想要多少点和多少行,剩下的就是逻辑思维。
int width = 10;
int height = 10;
int middle = width % 2 == 0 ? (width / 2) - 1 : width / 2;
int heightRoof = middle+1;
for (int i = 0 ; i < heightRoof ; i++){
for (int j = middle - i - 1 ; j >= 0 ; j--){
System.out.print(".");
}
if (i == 0) {
System.out.print("**");
System.out.println();
continue;
} else {
System.out.print("/");
for (int k = 0 ; k < 2*i ; k++){
System.out.print(".");
}
}
System.out.print("\");
System.out.println();
}
for (int i = 0 ; i < width ; i++){
System.out.print("-");
}