gpt4 book ai didi

java - 练习绘制一个星号正方形,星号之间有线条

转载 作者:行者123 更新时间:2023-12-01 10:52:09 26 4
gpt4 key购买 nike

我目前正在学习java,练习之一是画一个高和宽都有“n”个星号的正方形,其中有“-”和“|”它们之间。用户必须输入“n”,并相应地绘制正方形。示例:

n = 3:
*-*-*
| | |
*-*-*
| | |
*-*-*

我的问题是发生的事情是这样的:

*-*-*
| | |
*-*-*
| | |
*-*-*
| | |

这是我的代码:(你能看出它有什么问题吗?应该很简单,但我无法理解它......)

{
public static void main(String[] args) {
System.out.println("Criar quadrados de asteriscos e de hifens:");
System.out.println("Qual o valor a atribuir a n?");
Scanner teclado = new Scanner(System.in);
int n = teclado.nextInt();
int altura = n;
int largura = n;

for (int h = 0; h < altura ; h++) {

System.out.printf("");
for (int w = 0; w < largura - 1; w++) {
System.out.print("*-");
}
System.out.println("*");
for (int w2 = 0; w2 < largura - 2; w2++) {
System.out.print("| ");
} System.out.print("|");
System.out.println(" |");
}
}

最佳答案

因为你需要检查是否 h<altura-1 .

System.out.println("Criar quadrados de asteriscos e de hifens:");
System.out.println("Qual o valor a atribuir a n?");
Scanner teclado = new Scanner(System.in);
int n = teclado.nextInt();
int altura = n;
int largura = n;

for (int h = 0; h < altura ; h++) {

System.out.printf("");
for (int w = 0; w < largura - 1; w++) {
System.out.print("*-");
}
System.out.println("*");

if(h < altura - 1) {
System.out.println("|");
for (int w2 = 0; w2 < largura - 1 && h < altura -1; w2++) {
System.out.print("| ");
}
}
}

如果您使用的是 java 8,您还可以使用 StringJoiner这将减少您的打印,并根据您的需要创建字符串。

System.out.println("Criar quadrados de asteriscos e de hifens:");
System.out.println("Qual o valor a atribuir a n?");
Scanner teclado = new Scanner(System.in);
int n = teclado.nextInt();
int altura = n;
int largura = n;
StringJoiner starJoiner = new StringJoiner("-");
StringJoiner lineJoiner = new StringJoiner(" ");
for(int h = 0 ;h<altura;++h) {
starJoiner.add("*");
lineJoiner.add("|");
}
for (int h = 0; h < altura ; h++) {
System.out.println(starJoiner.toString());
if (h<altura-1)
System.out.println(lineJoiner.toString());
}

关于java - 练习绘制一个星号正方形,星号之间有线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803269/

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