打印正方形

时间:2013-10-14 21:26:18

标签: java

我正在为我的compsci课程做一些热身问题(我们正在学习java),我似乎无法弄明白。

该程序应询问用户他/她希望广场出现的大小。使用两个循环,您应该能够创建由字符“#”组成的正方形的轮廓。

以下是老师提供的提示。 提示:为了显示这种结构,请考虑以下伪代码,

for j = 0 to N:
   for i = 0 to N:
       if( i == ? or j == ? or i == ? or i == ?):
           print "#"
       else
           print " "

请根据老师的提示帮助我理解如何解决这个问题,因为我知道可能有很多方法可以解决这个问题。 我尝试使用多个for循环来解决这个问题,并且它有效,但我想知道如何将问题作为嵌套for循环来完成,就像在提示中一样。 谢谢!

2 个答案:

答案 0 :(得分:3)

您可以将i和j的值视为网格上的正方形,从每个方向的第0个方格(方向i和j)开始,到每个方向的第N个方格结束。想想i和j需要保持什么条件才能使正方形的轮廓和轮廓在网格中着色。

答案 1 :(得分:0)

唯一一次打印“#”就在边缘。这意味着当i和j等于1或大小时:

if(i == 0 || j == 0 || i == size_of_square-1 || j == size_of_square-1)

代码:

import java.util.*;

public class SquarePrinter{

    public static void main(String[] args){

        //ask for size
        Scanner scanner = new Scanner(System.in);
        System.out.println("give me yo size gurl:  ");
        int size_of_square = scanner.nextInt();

        if(size_of_square > 0){
            for(int i = 0; i<size_of_square; i++){
                for(int j = 0; j<size_of_square; j++){
                    if(i == 0 || j == 0 || i == size_of_square-1 || j == size_of_square-1)
                        System.out.print("#");
                    else
                        System.out.print(" ");
                }
                System.out.println();
            }
        }

    }
}

注意:伪代码是错误的。 N应为N-1(假设N等于用户输入的大小)。