Java的家庭作业问题,涉及数组

时间:2018-11-29 17:58:43

标签: java arrays

我对以下任务有疑问。

我应该使用[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();
        }

    }
}

2 个答案:

答案 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;
            }
        }
    }
}