1

基本的には 2 つの数字を入力する必要があり、それらは 2 つの正方形の側面のサイズになります (一方が他方の内側に描かれ、最大の正方形の中央に位置する内側の正方形になります)。

これを行う方法がまったくわかりません。思いついたのは、値を入力して正方形を 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 に答える