2013-05-01 56 views
0

我写了两个类。主类运行程序。它要求用户输入。基于用户输入,第二类将打印出一个正方形。每个方格都会打印出来----每个数字和|为墙壁的每个数字。修复了基于用户输入增长的方块

例如,假设用户输入了两个。在这种情况下,它会打印出一个正方形。

----- ----- 
|   | 
|   | 
----- ----- 

问题是我不能根据用户输入获得正方形的增长。

这是主类

import java.util.Scanner; 

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

     SquareBuilder square = new SquareBuilder(scan.nextInt()); 

     System.out.print(square.toString()); 
     square.changeSize(scan.nextInt()); 
     System.out.print(square.toString()); 
     square.changeSize(scan.nextInt()); 
     System.out.print(square.toString()); 
     square.changeSize(scan.nextInt()); 
     System.out.print(square.toString()); 
     square.changeSize(scan.nextInt()); 
     System.out.print(square.toString()); 
    } 
} 

public class SquareBuilder 
{ 
    final private int LENGTH_RATIO = 4; 
    final private String CEILING_FLOOR = "----"; 
    private int size; 
    private int spaces; 
    private String square;  

    public SquareBuilder(int size) 
    { 
     this.size = size; 
     constructSquare(); 
    } 

    private void spaces() 
    { 
     spaces = LENGTH_RATIO * size - 2; 
    } 

    private void ceilingAndFloor() 
    { 
     square += "\n"; 
     for (int i = 0; i < size; ++i) 
     { 
      square += CEILING_FLOOR; 
     } 
    } 

    private void walls() 
    { 
     for (int i = 0; i < size; ++i) 
     { 
      square +="\n|"; 

      for (int j = 0; j < spaces; ++j) 
      { 
       square +=" "; 
      } 

      square +="|"; 
     } 
    } 

    private void constructSquare() 
    { 
     spaces(); 
     square = ""; 

     ceilingAndFloor(); 
     walls(); 
     ceilingAndFloor(); 

    } 

    public int area() 
    { 
     return size * size; 
    } 

    public void changeSize(int size) 
    { 
     this.size = size; 
    } 

    public String toString() 
    { 
     String retVal = square; 
     retVal += "\nSize: " + size + " Area: " + area(); 

     return retVal; 
    } 
} 
+0

什么是错误? – mbeckish 2013-05-01 17:53:26

+0

正方形应该根据用户输入增长。基本的方形打印----底部和顶部天花板和|为墙壁。如果他们输入了两个,它会打印出来---- ----和| |对于每一面墙 ----- ----- – user2340248 2013-05-01 18:01:12

+0

你确定,我只是复制并粘贴它,它运行良好。 – 2013-05-01 18:05:05

回答

1

你甚至没有改变你方呈现的一部分。

我想你想从你的changeSize()方法调用您constructSquare()方法,或者至少致电constructSquare()你再次打印

+0

谢谢你这个工作。 – user2340248 2013-05-01 18:08:53

0

把constructSquare()在changeSize功能之前。 需要更改:

public SquareBuilder(int size) 
    { 

     changeSize(size); 

    // constructSquare(); 
    } 

    public void changeSize(int size) 
    { 

     this.size = size; 
     constructSquare(); 

    }