gpt4 book ai didi

java - 文本输出居中时出现问题

转载 作者:行者123 更新时间:2023-12-01 23:49:00 24 4
gpt4 key购买 nike

所以,我有一个作业要求我根据用户输入打印一些形状(树)。我正确地获得了所有形状,但还有第二个形状也应该打印,即底部正方形(树的底部),第二个正方形应该以顶部正方形(实际的树)为中心。

这是到目前为止的代码:

public class TreeStructures {

public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);

int height = 0;
int weidth = 0;
int weidth2 = 0;

//Introduction
System.out.println("Tree Structures");
System.out.println("---------------\n");
System.out.println("This program prints two tree like structures! ");
System.out.println("A \"Flat\" tree and a \"Christmas\" tree.");
System.out.println("You choose how big the trees will be.\n");
System.out.println("By Daniel Sousa (A00433806)\n");

//User input
System.out.print("How tall should the top of the tree be? ");
height = scnr.nextInt();
System.out.println();

//Input check
if (height > 4 && height < 21) {
System.out.println("Flat Tree:");

//Top Square
for (int i = 1; i <= height; i++) {
System.out.println(" ");
for (int j = 0; j <= (height*2) - 2; j++) {
System.out.print("*");
weidth = j;
}
}
//Bottom Square
for (int i = 1; i <= (height/5) + 1; i++) {
System.out.println(" ");
for (int k = 1; k <= (weidth - weidth2)/2; k++) {
System.out.print(" ");
}
for (int j = 0; j <= weidth/3; j++) {
System.out.print("<");
weidth2 = j;
}

}
}

//Invalid Input
else {
System.out.println("That's not a valid size. "
+ "I can only do trees from 5 to 20.\n");
System.out.println("Quitting now.\n");
System.out.print("Press enter...");
scnr.nextLine();
scnr.nextLine();
}
}
}
\\\

这是应该创建第二个矩形并将其居中的特定代码块:

for (int i = 1; i <= (height/5) + 1; i++) {
System.out.println(" ");
for (int k = 1; k <= (weidth - weidth2)/2; k++) {
System.out.print(" ");
}
for (int j = 0; j <= weidth/3; j++) {
System.out.print("<");
weidth2 = j;
}

}

作为输出,它按预期创建第二个矩形,甚至也正确缩进,但缩进的第一行生成了太多空格,原因我无法解释。

输出示例(将“X”替换为空格):

\\\
Tree Structures
---------------

This program prints two tree like structures!
A "Flat" tree and a "Christmas" tree.
You choose how big the trees will be.

By Daniel Sousa (A00433806)

How tall should the top of the tree be? 19

Flat Tree:

*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
*************************************
XXXXXXXXXXXXXXXXXX<<<<<<<<<<<<< //!-!-!-! <-problematic line
XXXXXXXXXXXX<<<<<<<<<<<<<
XXXXXXXXXXXX<<<<<<<<<<<<<
XXXXXXXXXXXX<<<<<<<<<<<<

我的问题是:如何使第二个矩形的第一行缩进(“X”)与其他行一样多。或者更好的是,如何使第二个矩形与第一个矩形的中间对齐?

谢谢!

最佳答案

你似乎用 for 循环使它变得过于复杂,使用 2 个循环(你移动的每个轴 1 个)并用简单的方法来决定是否应该打印某些东西不是更容易吗?像这样:

for (int i = 1; i <= (height/5) + 1; i++) {
System.out.println(" ");
for (int k = 1; k <= 2*weidth/3; k++) {
if (k < weidth/3){
System.out.print(" ");
} else {
System.out.print("<");
}
}
}

关于java - 文本输出居中时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com