我需要解决沙漏任务中的间距问题的帮助,这是说明
使用说明
给定参数size = n和字符符号。
您可以假设n为正奇数。
沙漏由n条线组成。
字符符号将在每行中出现多次。该符号将在第一行中出现n次。在后面的每一行中打印符号的次数将减少2,直到达到1。此后,在随后的每一行中打印符号的次数将增加2,直到再次达到n。
在每行的开头和结尾添加空格,以使每行的总宽度为n,并且每行中的符号在每行的中心对齐。
对于输出,可以使用System.out.print()/ println()或IO.output()/ outputln()。
这是我的代码:
public static void hourglass(int size, char symbol){
int subtract = (int)Math.floor(size / 2);
for(int i = size - subtract; i >= 1; i--){
for(int j=i;j<size - subtract;j++)
System.out.print(' ');
for(int j=1;j<=i*2-1;j++)
System.out.print(symbol);
System.out.println();
}
for(int i = 2; i <= size - subtract; i++)
{
for(int j=i;j<size - subtract;j++)
System.out.print(' ');
for(int j=1;j<=i*2-1;j++)
System.out.print(symbol);
System.out.println();
}
}
我要正确的是指令集五。我已经读了很多关于数组填充和\ s +删除空格的文章,但这不是我想要的。基本上,我想做的是在绘制完之后在沙漏的左右两侧均匀隔开。
她是我的问题的一个例子:
给定沙漏的大小为3。printHourglass()的预期输出:
???¶
█?█¶
???¶
您的代码输出:
█???¶
██?¶
█???¶
我一直在努力解决一整夜,需要尽快提交。请只需要一些提示。
我附上一张图片,以防万一文本无法正确显示。
最佳答案
您是否按原样在此处粘贴了代码?
抱歉地说,但是它的格式很糟糕。
请决定始终使用或不使用方括号,但有时不使用。我建议您始终使用它们,因为这样会使事情变得更加清晰。也要保持良好的缩进:
public static void hourglass(int size, char symbol){
int subtract = (int)Math.floor(size / 2);
for(int i = size - subtract; i >= 1; i--){
for(int j=i;j<size - subtract;j++){
System.out.print(' ');
}
for(int j=1;j<=i*2-1;j++){
System.out.print(symbol);
}
System.out.println();
}
for(int i = 2; i <= size - subtract; i++)
{
for(int j=i;j<size - subtract;j++){
System.out.print(' ');
}
for(int j=1;j<=i*2-1;j++){
System.out.print(symbol);
}
System.out.println();
}
}
与您发布的代码有关的下一件事是,由于得到以下信息,我无法验证您的输出:
(请注意:为了便于查看,我使用?作为字符和。而不是空格)
//Size 3
???
.?
???
//Size 5
?????
.???
..?
.???
?????
编辑1:
您需要做的是,在字符添加逻辑之后添加空格添加逻辑。
找到可行的循环逻辑是您的工作。
for(int i = size - subtract; i >= 1; i--){
for(int j=i;j<size - subtract;j++){
System.out.print(' ');
}
for(int j=1;j<=i*2-1;j++){
System.out.print(symbol);
}
for(/*find a working loop*/){
System.out.print(' ');
}
System.out.println();
}
for(int i = 2; i <= size - subtract; i++)
{
for(int j=i;j<size - subtract;j++){
System.out.print(' ');
}
for(int j=1;j<=i*2-1;j++){
System.out.print(symbol);
}
for(/*find a working loop*/){
System.out.print(' ');
}
System.out.println();
}