2013-10-14 57 views
-4

我正在爲compsci課程做一些熱身問題(我們正在學習java),而我似乎無法弄清楚什麼。打印一個正方形

該程序應詢問用戶他/她想要廣場出現的大小。使用兩個循環,您應該能夠創建由字符「#」組成的正方形的輪廓。

這是老師提供的提示。 提示:爲了顯示這種結構認爲下面的僞代碼的,

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

請幫助我瞭解如何根據老師的提示解決這個問題,因爲我知道大概有很多方法可以做到這個。 我試過使用多個for循環來做這個問題,它的工作原理,但我想知道如何在嵌套循環中做這個問題,就像在提示中一樣。 謝謝!

+0

想想應該打印「#」時,「i」和「j」的值是多少。 – rgettman

+0

在這個例子中,僞代碼中的每一行可以與一行實際的java代碼一一對應。哪條線路遇到問題? –

+0

我編輯我的帖子,包括我能夠編寫一個工作的程序,我只是想了解如何編寫一個與提示相同格式的程序。 @JonSkeet –

回答

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等於用戶輸入的大小)。

+0

@SamIam Umm。我認爲這個回答是他的問題 –

+0

感謝您的幫助! –

3

您可以將i和j的值看作網格上的正方形,從每個方向(方向i和j)上的第0個方形開始,並以每個方向上的第N個方形結束。想想我和j的條件需要保持,才能使網格中的正方形輪廓和輪廓線被着色。