1

基本上我需要输入两个数字,它们将是两个正方形的边长(一个在另一个内部绘制,位于最大正方形中间的内部正方形)。

我真的不知道该怎么做,我唯一能想到的就是输入一个值并绘制一个正方形:

package teste;

import java.util.Scanner;

public class Main {

private static Scanner sc;

public static void main(String a[])
{
        int size=0;

        System.out.print("Enter size: ");
        sc = new Scanner(System.in);
        size = sc.nextInt();

        for(int i=1; i <= size; i++){

        for(int j=1; j <= size; j++){

            if(i==1 || i==size || j==1 || j==size)
            System.out.print("*");
            else
            System.out.print(" ");
                        }

        System.out.println();
                        }
}       
  }

我知道这并不多,但我的java技能有限。各位大神能不能给个方法?我不知道如何在里面画正方形。

提前致谢。

4

1 回答 1

0

我看到的最简单的方法就是制作一个缓冲区,您将在其中填充要在控制台中绘制的字符

    // init buffer
    char buffer[][] = new char[size][];
    for (int i = 0; i < size; i ++) {
        buffer[i] = new char[size];
    }

    // borders of first square
    final int sq1Start = 0;
    final int sq1End = size-1;

    // draw outer square
    for(int i = sq1Start; i <= sq1End; i ++){
        for (int j = sq1Start; j <= sq1End; j ++) {
            if (i == sq1Start || i == sq1End || j == sq1Start || j == sq1End) {
                buffer[i][j] = '*';
            }
        }
    }

    // borders of second square
    final int sq2Start = size / 4;
    final int sq2End = size * 3 / 4;

    // draw inner square
    for (int i = sq2Start; i <= sq2End; i++) {
        for (int j = sq2Start; j <= sq2End; j++) {
            if (i == sq2Start || i == sq2End || j == sq2Start || j == sq2End) {
                buffer[i][j] = '*';
            }
        }
    }

    for (int i = 0; i < size; i ++) {
        for (int j = 0; j < size; j ++) {
            System.out.print(buffer[i][j]);
        }
        System.out.println();
    }

希望它会有所帮助

于 2013-08-28T03:42:53.460 回答