- public class RectangleTest {
- public static void main(String[] args) {
- printRectangle(6, 6);
- }
- /**
- * 输出一个矩形
- *
- * @param row
- * 行数
- * @param col
- * 列数
- */
- public static void printRectangle(int row, int col) {
- int midRow = 0;// 中间行
- int midCol = 0;// 中间列
- int temp = row % 2;// 计算出行数为奇数还是偶数
- int temp2 = col % 2;// 计算出列数为奇数还是偶数
- for (int i = 1; i <= row; i++) {
- for (int j = 1; j <= col; j++) {
- if (i == 1 || i == row) {// 当前行为1或当前行为最后一行时
- System.out.print(1 + " ");
- } else if (j == 1 || j == col) {// 当前列为1或当前列为最后一列时
- System.out.print(1 + " ");
- } else if (j != 1 && j != col) {// 当前列不为1且当前列不为列数时
- if (temp == 1) {// 如果行数为奇数
- midRow = row / 2 + 1;// 计算出中间行是哪一行
- if (i == midRow) {// 如果当前行等于中间行
- if (temp2 == 1) {// 如果列数为奇数时
- midCol = col / 2 + 1;// 计算出中间列是哪一列
- if (j == midCol) {// 如果当前列等于中间列时
- System.out.print(j + " ");
- continue;
- }
- } else {// 如果列数为偶数时
- midCol = col / 2;// 计算出中间列是哪一列
- // 如果当前列等于中间列或当前列等于中间列的后一列,
- // 为什么要这样做呢,因为当列数为偶数时,
- // 中间列应该有两列吧.
- if (j == midCol || j == midCol + 1) {
- System.out.print(i + " ");
- }
- }
- }
- System.out.print(2 + " ");
- } else if (temp == 0) {// 如果行数为偶数时
- midRow = row / 2;// 计算出中间行是哪一行
- // 如果当前行等于中间行或当前行等于中间行的下一行,
- // 为什么要这样做呢,因为当行数为偶数时,
- // 中间行应该有两行吧.
- if (i == midRow || i == midRow + 1) {
- if (temp2 == 1) {// 当列数为奇数时
- midCol = col / 2 + 1;// 计算出中间列是哪一列
- if (j == midCol) {// 如果当前列等于中间列时
- System.out.print(j + " ");
- }
- } else {// 当列数为偶数时
- midCol = col / 2;// 计算出中间列是哪一列
- // 如果当前列等于中间列或当前列等于中间列的下一列时
- if (j == midCol || j == midCol + 1) {
- System.out.print(j + " ");
- continue;
- }
- }
- }
- System.out.print(2 + " ");
- }
- }
- }
- // 最后当然少不了要换行
- System.out.println();
- }
- }
- }
复制代码 |