我正在为我的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循环来完成,就像在提示中一样。 谢谢!
答案 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等于用户输入的大小)。