2013-11-27 75 views
0

//學院工作打印廣場環路

你好,我想用循環打印一個正方形,它也需要用戶輸入的高度和寬度。 輸出應該是這樣的

.... 
. . 
....

任何幫助,將apprciated

import java.util.Scanner; 
public class Ex1 { 
    public static void main(String[] args) { 

     Scanner input = new Scanner(System. in); 
     System.out.print("Please enter the height of the box: "); 
     int x = input.nextInt(); 

     System.out.println("Please enter a width for the box: "); 
     int y = input.nextInt(); 
     drawbox(x, y); 

    } 

    static void drawbox(int x, int y) { 

     for (int j = 0; j < y; j++) { 
      System.out.println("*"); 

      System.out.println(); 
      for (int i = 0; i < x - 2; i++) { 
       System.out.print("*"); 
       for (int z = 0; z < y - 2; z++) { 
        System.out.print(" "); 
       } 
       System.out.println("*"); 

       for (int i = 0; j < y; j++) { 
        System.out.println("*"); 
       } 

      } 
     } 
    } 
} 
+1

爲什麼帶打印廣場的兩個參數?用一個參數(用戶輸入)你可以做到這一點 –

+0

在一個正方形:heigth ==寬度。如果用戶可以輸入heigth和width,則必須打印一個矩形。請說明你需要做什麼。 – Mailerdaimon

回答

2

變化從

for(int i = 0; j<y ; j++){ 
     System.out.println("*"); 
} 

你的循環要

for(int j = 0; j<y ; j++){ 
     System.out.println("*"); 
} 

要繪製矩形,改變喜歡你drawbox代碼:

static void drawbox(int x, int y) { 
    for (int i = 0; i < y; i++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
    for (int i = 0; i < x - 2; i++) { 
     System.out.print("*"); 
     for (int j = 0; j < y - 2; j++) { 
      System.out.print(" "); 
     } 
     System.out.println("*"); 
    } 
    for (int i = 0; i < y; i++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 
0

變化

for(int i = 0; j<y ; j++){ 
     System.out.println("*"); 
} 

for(int i = 0; i<y ; i++){ 
     System.out.println("*"); 
} 
+1

也許爲此添加一個簡短的解釋。 –

0

呦你可以使用這個(見下文)。這將打印*的第一行和最後一行。對於中間行,它會打印一個星號,然後是空格,並用星號關閉。它還有另一種方法allStars,它重新使用第一行和最後一行的代碼。

static void drawbox(int height, int width){ 
    for (int i = 1; i <= height; i++) { 
     if(i==1 || i==height){ 
      allStars(width); 
     }else{ 
      System.out.print("* "); 
      for(int k = 2; k < width; k++){ 
       System.out.print(" "); 
      } 
      System.out.print("*"); 
      System.out.print("\n"); 
     } 
    } 
} 
static void allStars(int width){ 
    for(int k = 1; k <= width; k++){ 
     System.out.print("* "); 
    } 
    System.out.print("\n"); 
} 
0

問題修復後,您的解決方案已經夠用了。但以此爲簡單的方法,希望你會得到一些想法從這個

private static void printSquare(int width,int length){ 
     for(int i=0;i<width;i++){ 
      StringBuilder stringBuilder=new StringBuilder(); 
      stringBuilder.append("* "); 
      for (int j=2;j<length;j++){ 
       if(i==0){ 
       stringBuilder.append("* "); 
       }else if(i==width-1){ 
       stringBuilder.append("* "); 
       }else { 
       stringBuilder.append(" "); 
       } 
      } 
      stringBuilder.append("* "); 
      System.out.println(stringBuilder); 
     } 
} 

printSquare(5,5);,出把

* * * * * 
*  * 
*  * 
*  * 
* * * * * 
+0

看起來像printSquare(7,5)給我 – Sionnach733

+0

@ Sionnach733是的,它已被更正。 –

0

一個簡單的算法,通過循環平方得出

public void draw(int length){ 
    for(int i = 0; i < length; i++){ 
     for(int j = 0;j < length; j++){ 
      if(i!= 0 && j > 0 && i!= length - 1 && j!= length-1){ 
       System.out.print(" "); 
      } 
      else System.out.print("*"); 
     } 
     System.out.println(); 
    } 
}