形状不会扩大

时间:2012-10-11 03:35:48

标签: java

每当我尝试缩放形状时,都没有任何反应,然后控制台停止响应输入。 这是set scale命令:

case 7: do
                         {
                            System.out.println("\nEnter scale factor");
                            scale=input.nextDouble();
                         }
                         while(scale<0);
                         Shape.setScaleFactor(scale);
                         break;

这是比例形状命令

 case 4: for(i=0; i<s.length; i++)
                         {
                            if(s[i]!=null)
                            {
                              s[i].scaleShape();
                            }
                         }
                         break;

以下是主要的方法变量:

int i=0;
        int m=0;
        double scale;
        boolean exit=false;
        Shape[] s = new Shape[10];

以下是形状类中的所有相关方法;

private static double scaleFactor;
public static double getScaleFactor()
    {

        return scaleFactor;
    }
    //Set ScaleFactor
    public static void setScaleFactor(double x)
    {

        scaleFactor=x;
    }

这是矩形子类

中的scaleshape方法
private double base;
    private double height;   
@Override public void scaleShape()
    {
        base=base*getScaleFactor(); height=height*getScaleFactor();

    }

        public abstract void scaleShape();

以下是圆圈类中的设定比例方法:

private final double pi = Math.PI;
    private double radius;
 @Override public void scaleShape()
    {
         radius*=getScaleFactor();
    }

1 个答案:

答案 0 :(得分:1)

我的猜测是你的问题在这里:

do
{
    System.out.println("\nEnter scale factor");
    scale = input.nextDouble();
}
while(scale < 0);

如果添加一些日志记录会怎样?

do
{
    System.out.println("\nEnter scale factor");
    scale = input.nextDouble();
    System.out.println("Scale entered was: " + scale);
    System.out.println("Is scale < 0? " + (scale < 0));
}
while(scale < 0);

如果你没有得到你期望的东西,那么在String中阅读而不是看看你实际得到的输入可能是值得的。您始终可以读取字符串,记录它,然后使用Double.valueOf(String)进行转换。

另一种可能性是它正在工作,但你永远不会重置scale,这是某种循环,所以它只是继续永久地缩放形状,但永远不会停止再次请求输入。