java中的绘画艺术 我想画一个正方形,它是一个轮廓,中间有一个点,大小在4到20之间。 ***** *...* *...* *...* *****

java中的绘画艺术 我想画一个正方形,它是一个轮廓,中间有一个点,大小在4到20之间。 ***** *...* *...* *...* *****,java,Java,我很难使高度和长度相等。 这是我的密码,你能帮我吗。。谢谢 class Main { public static void printSquare( int size ) { if ( size >= 20 && size >= 4) { size = 4; } int squareLenght = size; int i = 1; int p = 1; if ( p <= size ) {

我很难使高度和长度相等。 这是我的密码,你能帮我吗。。谢谢

class Main
{
  public static void printSquare( int size )
  {
    if ( size >= 20 && size >= 4) 
    { size = 4; }

    int squareLenght = size;
    int i = 1; 
    int p = 1;

    if ( p <= size )
    {
       int t = 1;

       while ( t <= squareLenght  )
       {
        System.out.print( "*" );
        t = t + 1;
       }
    }
       System.out.println();           //  Newline
       i = i + 1;


    while ( i <= squareLenght )
    {

       int d = 1; 
       int s = 1;


       if ( s < squareLenght  );{
       System.out.print( "*" ); 
       s = s + 1;
       }

       while ( d < size-1  )
       {
        System.out.print( "." );
        d = d + 1;

       }


       System.out.println( "*" );
        i = i + 1;


    }

    if ( p <= size )
    {
       int t = 1;

       while ( t <= squareLenght  )
       {
        System.out.print( "*" );
        t = t + 1;
       }
    }

    System.out.println();           
       i = i + 1;

}
}
主类
{
公共静态空白打印正方形(整数大小)
{
如果(大小>=20和大小>=4)
{size=4;}
int SquareLength=尺寸;
int i=1;
int p=1;

如果(p问题是while循环中的一个条件

while ( i <= squareLenght )

while(i由于这一行,您在正文中(在边框之间)打印了太多行:

while(我有很多代码可以做你想做的;)

在不参加“代码混淆”竞赛的情况下,有几种方法可以缩短代码混淆

像这样:

public static void printSquare( int size ) {
    final int n = Math.max( 4, Math.min(20, size) );
    for (int y = 0; y < n; y++) {
        for (int x = 0; x < n; x++) {
            System.out.print( x == 0 || y == 0 || x == n - 1 || y == n - 1 ? "*" : "." );
        }
        System.out.println();
    }
}
publicstaticvoidprintsquare(int-size){
final int n=Math.max(4,Math.min(20,size));
对于(int y=0;y没有看过你的代码,但是你使用的是一个单字体的字体?昨天你没有做正方形部分吗?这可能是昨天任务的升级版本。这段时间他想要的是点而不是星号,当你说“正方形”的时候。,你的意思是相同数量的字符单元格,还是相同的实际大小?字符单元格的高度通常是宽度的两倍左右…11行行对于这样一件简单的事情来说确实是太多了;)@塞德里克·马丁:我的观点是,这比他拥有的要少得多。不管怎样,上面的
大小检查/修改范围是2,重复打印('*',..)是2,
+
println()
,中间大小=size-2;
循环是5,
打印('*'),
重复打印('''.',..)
println(“*”)
,然后再打印两个底部边框。您可以减少打印量,但这就是我上面描述的算法,更不用说不需要减少打印量。
if ( size >= 20 && size >= 4) 
{ size = 4; }
if (size > 20) size = 20;
else if (size < 4) size = 4;
public static void printSquare( int size ) {
    final int n = Math.max( 4, Math.min(20, size) );
    for (int y = 0; y < n; y++) {
        for (int x = 0; x < n; x++) {
            System.out.print( x == 0 || y == 0 || x == n - 1 || y == n - 1 ? "*" : "." );
        }
        System.out.println();
    }
}