基本上我需要输入两个数字,它们将是两个正方形的边长(在另一个内部绘制一个,内部正方形位于最大正方形的中间)。
我真的不知道该如何做到这一点,而我唯一想到的就是输入一个值并且有一个绘制的正方形:
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技能有限。你们能告诉我们这样做吗?我不知道如何在里面画广场。
提前致谢。
答案 0 :(得分: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();
}
希望它会有所帮助