1

所以我的任务是创建一个基本上需要看起来像这样的空心正方形。

*----*
|    |
|    |
|    |
*----*

(大小因用户输入而异)用户应该输入宽度和长度。至于现在,我已经能够创建一个空心正方形和一个完整的正方形以及所有东西。现在我真的很困惑如何用不同的字符创建正方形..

import java.util.Scanner;
public class HulR{
  public static void main (String []args) {
 Scanner tastatur = new Scanner(System.in) ;

 int bredde;
 int lengde;


 System.out.print("bredde") ; 
 bredde = tastatur.nextInt();

 System.out.print("lengde"); 
 lengde = tastatur.nextInt();

 for (int j = 1; j<= bredde; j++) 
   for (int i = 1; i <= lengde; i++){
     if (i == 1 || i == lengde) 
       System.out.print("*");

     else 
       System.out.print("|");
System.out.println();
 }  

这就是我已经走了多远......我已经进入编程初学者课程 3 周了,当涉及到这项任务时我只是迷失了......

bredde = 宽度和lengde = 长度 btw

4

2 回答 2

2

想一想:您正在逐行打印它。

第一行和最后一行与“中间”行的不同之处在于它们的格式为---,而另一行的格式为 | |。

所以我们必须区分这两种情况:

for (int i = 1; i<=height; i++) {
   for (int j = 1; j<=width; j++) {
     if (isFirstOrLastLine(i, height)) {
        //print like this: *--*
     }
     else {
        //print like this : |  |
     }
   }
}

现在,我们如何知道我们是在第一行还是最后一行:

boolean isFirstOrLastLine(int line, int height) {
  return i == 1 || i == height;
}

现在我们可以填写逻辑来打印实际的行了!

for (int i = 1; i<=height; i++) {
   for (int j = 1; j<=width; j++) {
     if (isFirstOrLastLine(i, height)) {
        //print like this: *--*
        if (isFirstOrLastColumn(j, width)) {
           System.out.print("*");
        }
        else {
           System.out.print("-");
        }
     }
     else {
        //print like this : |  |
        if (isFirstOrLastColumn(j, width)) {
           System.out.print("|");
        }
        else {
           System.out.print(" ");
        }
     }
   }
}

你能自己猜出“isFirstOrLastColumn”函数的代码吗?

于 2015-09-08T14:16:25.387 回答
0

这是该问题的一个很好的解决方案:

代码

import java.util.Arrays;
import java.util.Scanner;

public class Program {
    public static void main(String[] args) {
        // query parameters
        Scanner in = new Scanner(System.in);

        System.out.print("width=");
        int width = in.nextInt();

        System.out.print("height=");
        int height = in.nextInt();

        // setup model
        char[] headline = new char[width];
        Arrays.fill(headline, '-');
        headline[0] = '*';
        headline[width - 1] = '*';

        char[] midline = new char[width];
        Arrays.fill(midline, ' ');
        midline[0] = '|';
        midline[width - 1] = '|';

        // draw model
        System.out.println(headline);
        if (height >= 2) {
            for (int r = 1; r < height - 1; r++) {
                System.out.println(midline);
            }
            System.out.println(headline);
        }
    }
}

width并且height假定大于 0,请随意添加代码来处理错误的用户输入。

于 2015-09-08T14:22:37.580 回答