我应该创建一个星号框,里面有一个X,输入指定的行数。如果size =7,则输出示例:
*******
** **
* * * *
* * *
* * * *
** **
*******到目前为止,我已经找到了如何创建一个空的中空盒子。
// n is size of box, r = rows, c = columns
for (int r = 1; r <= n; r++) {
for (int c = 1; c <= n; c++) {
if (r == 1 || r == n || c == 1 || c == n) {
System.out.print("*");
} else {
System.out.print(" ");
System.out.println();
}
}
}除此之外,我不确定如何获得正确的间距和星号位置,以将X放置在框内。任何帮助都将不胜感激。:)
发布于 2019-10-08 21:32:54
从数学的角度来考虑。
X是对角线,也是反对角线。
所以,任何时候X等于Y,添加一个高度,只要X等于- Y,添加星号。
这只适用于正方形的盒子。
希望这能有所帮助!
发布于 2019-10-08 21:49:16
下面是如何创建X的想法
int n = 7;
for (int r = 1; r <= n; r++){
for (int c = 1; c <= n; c++){
//r == c - main diagonal
//c == n-r+1 - second diagonal
//add 1 because count start from 1
//example: r = n -> n-r = 0 -> c never has value 0
if((r == c) || (c == n-r+1)){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}你可以在你的if和else之间插入这个。另外,我推荐使用{和},如果代码正常工作也没关系。这将使您的代码更容易阅读。
发布于 2019-10-08 22:39:22
@ZektorH在代码中说:
int sizeOfBox = 11;
int row = 1;
for (; row <= sizeOfBox; row++) {
if (row != 1) {
System.out.println();
}
for (int column = 1; column <= sizeOfBox; column++) {
if (column == 1 || column == sizeOfBox || row == 1 || row == sizeOfBox) {
System.out.print("*");
} else {
if (column == row || column == (sizeOfBox-row+1)) {
System.out.print("*");
} else
System.out.print(" ");
}
}
}https://stackoverflow.com/questions/58287382
复制相似问题