用于打印星号方形框的java数组
我试着用答案在边框周围写一个正方形的星号 但我根本无法让它工作 这是我正在尝试的代码用于打印星号方形框的java数组,java,arrays,Java,Arrays,我试着用答案在边框周围写一个正方形的星号 但我根本无法让它工作 这是我正在尝试的代码 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
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] = "*";
}
}
}
当条目不是星形时,您需要一个
else
来打印空格。另外,我会将println()
移动到循环的末尾(而不是开始)。假设您实际上也要填充数组
,那么也要用空格填充它。像
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();
您可以使用该方法,这样代码就不那么冗长,还可以将生成包含在一个方法中。您可以通过设置两个参数使其成为动态的:行数和列数:
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;
}
}
似乎您已经有了一个生成正确结果的代码示例,那么您的问题是什么呢?我尝试运行它,但它会生成一行星号。你应该试试这段代码,它一点用处都没有。答案中的代码省略了一些内容。提供的代码生成了一个二维数组,该数组在边框周围用星号填充,在其他地方用null填充。如果打印出
数组
,它将生成所需的框。打印出数组有一些细微差别,但这并不太棘手。它缺少一条else语句,这就是它不起作用的原因。@user您看到我的答案了吗?我还解释了如何以易于使用的方法嵌入逻辑
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();
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
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;
}
}
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
*****
* *
* *
* *
* *
* *
* *
* *
* *
*****