我对以下任务有疑问。
我应该使用[5] [5]大小的char数组,并使用它呈现以下内容。
o o o o o
o o o o o
= = = = =
u u u u u
u u u u u
到现在,我已经走了。
u u u u u
o u u u u
o o u u u
o o o u u
o o o o u
这不是理想的结果。
当数组位于中间上方或下方时,如何检查数组?
到目前为止,这是我的代码:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
char top = 'o';
char bot = 'u';
char[][] ar = new char[5][5];
fillArray(ar, top, bot);
}
public static void fillArray(char[][] nArray, char top, char bot) {
for(int i = 0; i < nArray.length; i++)
{
Arrays.fill(nArray[i], 'o');
for(int j = 0; j < nArray[i].length; j++)
{
Arrays.fill(nArray[j], 'u');
System.out.print(" " + nArray[i][j] );
}
System.out.println();
}
}
}
答案 0 :(得分:1)
您可以跟踪中间元素,以了解何时放置===
行。这是基于您的代码的一般想法,但是请考虑一下使用偶数(例如char[][] ar = new char[10][10];
)初始化数组时会发生什么情况。
int mid = nArray.length / 2;
for(int i = 0; i < nArray.length; i++){
if (i > mid){ // line is past mid point, fill it with 'u'
Arrays.fill(nArray[i], 'u');
} else if (i == mid){ // line is mid point, fill it with `===`
Arrays.fill(nArray[i], '=');
} else { // line is before mid point, fill it with `o`
Arrays.fill(nArray[i], 'o');
}
}
for (int j = 0; j < nArray.length; j++){
System.out.println(Arrays.toString(nArray[j]));
}
答案 1 :(得分:0)
鉴于行数和列数始终相同,并且长度为奇数,则可以按以下方式填充数组:
public static char[][] fillArray(char[][] array, char upper, char lower) {
int upperLimit = array.length / 2;
int middle = upperLimit + 1;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (i < upperLimit) {
array[i][j] = upper;
} else if (i == middle - 1) {
array[i][j] = '=';
} else {
array[i][j] = lower;
}
}
}
}