2014-09-23 61 views
-2

我必須繪製使用由用戶輸入的規格長方形的周長它應該看起來像這樣繪圖與空白的長方形的周長中間

********** 
*  * 
*  * 
*  * 
********** 

地雷擁有一切的中心完整 - 我如何讓中心成爲空白空間?

這是我到目前爲止的代碼

源代碼 包lab5; 進口java.util.Scanner的;

public class Lab5 { 
public static void main(String[] args) { 
    Scanner inputReader = new Scanner(System.in); 

    int i, j, width, height; 
    String x; 

    System.out.print("Enter a character: "); 
    x = inputReader.nextLine(); 
    System.out.print("Enter a height: "); 
    height = inputReader.nextInt(); 
    System.out.print("Enter a width: "); 
    width = inputReader.nextInt(); 

    for(i = 1; i <=height; i++) { 
     for(j = 1; j <= width; j++) { 
      System.out.print(x); 
     } 
     System.out.println(); 
    } 
} 
} 
+0

你能在你需要如何打印出每行字形容? – 2014-09-23 19:54:21

+0

我需要它看起來像這樣3寬* 3高度,但只是爲了打印出不是中心的邊界 – KangarooRIOT 2014-09-23 20:00:50

+0

也許我應該重申我的建議:用文字描述你必須在矩形的一行中打印出哪些字符。通常使用英語或您的母語來描述問題將有助於您瞭解如何解決問題。 – 2014-09-24 19:50:34

回答

2

的壓實if/else語句到你的for循環。如果上邊框,下邊框,左列或右列打印字符。

for(i = 1; i <=height; i++) { 
    for(j = 1; j <= width; j++) { 
     if(i == 1 || i == height || j == 1 || j == width) 
      System.out.print(x); 
     else 
      System.out.print(" "); 
    } 
    System.out.println(); 
} 
+0

完美!謝謝! – KangarooRIOT 2014-09-23 20:02:10

1

呃...打印空白。

System.out.print(x); 
for(j = 2; j <= width-1; j++) { 
    System.out.print(" "); 
} 
System.out.print(x); 
+0

我有我的代碼,你可以看到,我的問題是我如何使它只打印出形狀(周長)的輪廓而不是完整的中心? – KangarooRIOT 2014-09-23 19:54:40

+0

@ user3681591你有什麼代碼? 'System.out.print(「」);'?我沒有看到它。 – 2014-09-23 19:55:24

+0

好的,我很抱歉,我的問題如何控制打印出多少空間以及我在哪裏放置它? – KangarooRIOT 2014-09-23 19:56:12

0

當i和j不在邊界時,您可以使用System.out.print(「」)打印空格。

import java.util.Scanner; 

public class PrintBox { 
    public static void main(String[] args) { 
     Scanner inputReader = new Scanner(System.in); 

     int i, j, width, height; 
     String x; 

     System.out.print("Enter a character: "); 
     x = inputReader.nextLine(); 
     System.out.print("Enter a height: "); 
     height = inputReader.nextInt(); 
     System.out.print("Enter a width: "); 
     width = inputReader.nextInt(); 

     for(i = 1; i <= height; i++) { 
      for(j = 1; j <= width; j++) { 
       if (i == 1 || i == height || j == 1 || j == width) 
        System.out.print(x); 
       else 
        System.out.print(" "); 
      } 
      System.out.println(); 
     } 
    } 
} 
0
for(int i=0;i<width;i++){ 
    System.out.println(x); 
} 
for(int i=0;i<height;i++){ 
    System.out.println(x); 
    for(int j=0;j<width-2;j++){ 
     System.out.println(" "); 
    } 
    System.out.println(x); 
} 
for(int i=0;i<width;i++){ 
    System.out.println(x); 
} 
+0

這對我來說是一個無限循環:/ – KangarooRIOT 2014-09-23 19:59:49

+0

哎呦,修復它 – Michael 2014-09-23 20:02:14

1

另一種解決方案是行不通的,因爲我們不能做

height = inputReader.nextInt(); 
width = inputReader.nextInt(); 

它不會採取寬度正確的輸入。

正確的實現是:(注意代碼試圖和遵守)

public static void main(String[] args) { 
    Scanner inputReader = new Scanner(System.in); 
    int i, j, width, height; 
    String x; 
    System.out.print("Enter a character: "); 
    x = inputReader.nextLine(); 
    System.out.print("Enter a height: "); 
    height = Integer.parseInt(inputReader.nextLine()); 
    System.out.print("Enter a width: "); 
    width = Integer.parseInt(inputReader.nextLine()); 

    for(i = 0; i <= height; i++) { 
     System.out.print(x); 
     for(j = 1; j <= width-1; j++) { 
      if(i==0 || i==height) { 
       System.out.print(x); 
       continue; 
      } 
      System.out.print(" "); 
     } 
     System.out.print(x); 
     System.out.println(); 
    } 
}