我正在尝试使用https://stackoverflow.com/a/34209565答案在边框周围写一个正方形的星号。
但是我根本无法正常工作。
这是我正在尝试的代码。
int _i = 10;
int _j = 10;
String[][] array = new String[_i][_j];
for (int i = 0; i < _i; i++) {
System.out.println();
for (int j = 0; j < _j; j++) {
if(i==0 || j == 0 || i == _i - 1|| j == _j - 1){
array[i][j] = "*";
System.out.print(array[i][j]);
}
}
}
我得到的输出是:
**********
**
**
**
**
**
**
**
**
**********
我尝试从答案中运行代码,但它会产生一行星号。答案中的代码已被省略。
答案中提供的代码是:
int _i = 10;
int _j = 10;
String[][] array = new String[_i][_j];
for (int i = 0; i < _i; i++) {
for (int j = 0; j < _j; j++) {
if(i==0 || j == 0 || i == _i-1|| j == _j-1){
array[i][j] = "*";
}
}
}
答案中的输出是:
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
答案 0 :(得分:0)
当条目不是星号时,您需要else
来打印空格。另外,我将println()
移动到循环的末尾(而不是开始)。假设您实际上也想填充array
,请在其中也填充一个空格。喜欢,
for (int j = 0; j < _j; j++) {
if (i == 0 || j == 0 || i == _i - 1 || j == _j - 1) {
array[i][j] = "*";
} else {
array[i][j] = " ";
}
System.out.print(array[i][j]);
}
System.out.println();
输出
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
答案 1 :(得分:0)
您可以使用repeat
方法,这样代码就不再那么冗长,也将生成代包含在一个方法中,您可以使其动态地设置两个参数:行数和列数:
class Test
{
public static void main(String[] args)
{
System.out.println(createBox(10, 10));
System.out.println(createBox(10, 5));
}
public static String createBox(int qtaRig, int qtaCol)
{
String result = "";
for(int r = 1; r <= qtaRig; r++)
{
if(r == 1 || r == qtaRig)
{
result += "*".repeat(qtaCol);
}
else
{
result += "*" + " ".repeat(qtaCol-2) + "*";
}
result += "\n";
}
return result;
}
}
结果:
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
*****
* *
* *
* *
* *
* *
* *
* *
* *
*****