在二维数组的边界周围制作一个正方形的星号
Make a square shape of asterisc around border of 2D Array
我试图只用星号填充二维数组的外边界我已经完成了一半,但似乎我无法让它填充二维数组的最后一列和最后一行。
so far I can do this
这是我的代码:
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array.length; j++)
{
if (array[i][j] == array[0][j] || array[i][j] == array[i][0])
{
array[i][j] = "*";
}
}
}
但显然我想完成二维数组周围的方形,所以我尝试了类似的方法。
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array.length; j++)
{
if (array[i][j] == array[array.length - 1][j]
|| array[i][j] == array[i][array.length - 1])
{
array[i][j] = "*";
}
}
}
我的想法只是转到二维数组中的最后一个有效位置,然后简单地打印列和行,但它似乎不起作用。感谢我能得到的所有帮助,我真的很感激,因为我是 Java.
的一名学习者
你也可以做同样的事情,
public static void main(String[] args) {
int n = 5;
String [][] array = new String[n][n]; // 2-dimension array define...
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if(i == 0 || (i == array.length-1 || j==0 || j==array.length-1)){ // if top,left,right,bottom line then this...
array[i][j] = "*|";
}else{ // if not border line then this...
array[i][j] = "_|";
}
}
}
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println("");
}
}
输出:
@Ricki,你的思路是对的,但是你没有考虑到 array[i][j] == array[array.length - 1][j]
不是比较 per say 的 "shell" ,而是比较它的内在价值,所以,即使 array[1][1] != array[2][1]
,如果它们的值为 null
,它们也相等。
尝试使用此代码:
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] = "*";
}
}
}
我所做的是比较第一行 (i==0
)、第一列 (j==0
)、最后一行 (i == _i-1
) 和最后一列 (j == _j-1
).
然后:
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
我试图只用星号填充二维数组的外边界我已经完成了一半,但似乎我无法让它填充二维数组的最后一列和最后一行。
so far I can do this
这是我的代码:
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array.length; j++)
{
if (array[i][j] == array[0][j] || array[i][j] == array[i][0])
{
array[i][j] = "*";
}
}
}
但显然我想完成二维数组周围的方形,所以我尝试了类似的方法。
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array.length; j++)
{
if (array[i][j] == array[array.length - 1][j]
|| array[i][j] == array[i][array.length - 1])
{
array[i][j] = "*";
}
}
}
我的想法只是转到二维数组中的最后一个有效位置,然后简单地打印列和行,但它似乎不起作用。感谢我能得到的所有帮助,我真的很感激,因为我是 Java.
的一名学习者你也可以做同样的事情,
public static void main(String[] args) {
int n = 5;
String [][] array = new String[n][n]; // 2-dimension array define...
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if(i == 0 || (i == array.length-1 || j==0 || j==array.length-1)){ // if top,left,right,bottom line then this...
array[i][j] = "*|";
}else{ // if not border line then this...
array[i][j] = "_|";
}
}
}
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println("");
}
}
输出:
@Ricki,你的思路是对的,但是你没有考虑到 array[i][j] == array[array.length - 1][j]
不是比较 per say 的 "shell" ,而是比较它的内在价值,所以,即使 array[1][1] != array[2][1]
,如果它们的值为 null
,它们也相等。
尝试使用此代码:
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] = "*";
}
}
}
我所做的是比较第一行 (i==0
)、第一列 (j==0
)、最后一行 (i == _i-1
) 和最后一列 (j == _j-1
).
然后:
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********