创建一种方法,通过用户输入的数量增加椭圆的高度和宽度

时间:2015-12-29 14:56:00

标签: java

好的,对于上课,我一直在研究一些长方形的问题。我遇到的一个问题是创建一种方法,用一个用户定义的数量来增加椭圆形的高度和宽度。

这是我的主要内容:

    import java.util.Scanner;

public class Oblong6
{
   public static void main(String [] args)
   {

      Oblong ob1 = new Oblong();

      Scanner keyboardIn = new Scanner(System.in);

      Oblong ob = new Oblong();

      double h, w, x;
      System.out.print ("Enter the height of the oblong:");
      h = keyboardIn.nextDouble();

      System.out.print ("Enter the width of the oblong:");
      w = keyboardIn.nextDouble();

      System.out.print (" Enter the amount to increment by ");
      x = keyboardIn.nextInt();

      ob.setHeight(h);
      ob.setWidth(w);
      ob.setX(x);

      System.out.println (ob.incHeight());
      System.out.println (ob.incWidth());

      System.out.println("Height " + h);
      System.out.println("Width " + w);


   }
}

这是我在椭圆形课程中创建的方法来增加它们:

public class Oblong
{
    // instance variables
    private double height;
    private double width;
   private double x;

    // constructor
    public Oblong()
   {

        height = 0.0;
        width = 0.0;
      x = 0.0;
    }

    // methods
    public double getHeight()
    {   
        return height;      
    }

    public double getWidth()
    {   
        return width;       
    }
   public double setX(double x)
   {
      return x;
   }
    public void setWidth(double w)
    {   
        width = w;
    }

    public void setHeight(double h)
    {   
        height = h;
    }

    public double calculateArea()
    {   
        return width * height;
    }   

   public double calculatePerimeter()
   {
      return width + height * 2;

   }

   public boolean isSquare()
   {
      if(height == width)
      {
         return true;
      }
      else
      {
         return false;
      }
    }
   public double incHeight()
    {
      { 
        return height + x ; 

       }
   }
   public double incWidth()
   {
      {
         return width + x ;
      }
   }
}// end of class

但它只打印出原始的高度和宽度。

3 个答案:

答案 0 :(得分:2)

惠特:

 public double incWidth()
   {
      {
         return width + x ;
      }
   }

您返回宽度+ 1,但您没有修改私有属性。就这样做:

public double incWidth(){
    this.width = this.width + 1;
    return this.width;
}

同样在制作者中,您不需要返回任何内容。要更改类中的属性,请执行以下操作:

private double value;

private void setValue( double value ) {
   this.value = value;
}

使用 this.value ,您将引用该类中的私有值。如果没有这个,您将引用方法 setValue 的参数值。

进一步阅读: How do getters and setters work?

答案 1 :(得分:2)

您的实例变量x尚未设置,因此height + x将返回height + 0.0

改变这个:

public double setX(double x)
   {
      return x;
   }

对此:

public double setX(double x)
   {
      this.x = x;
   }

这将返回要显示的值,但应设置以供以后使用,因此您需要:

public void incHeight()
    {
        setHeight(height + x) ; 
    }

然后:

System.out.println("Height " + height); // height  not h

答案 2 :(得分:2)

您的代码:

public double incHeight()
{
  { 
    return height + x ; 

   }
}

只需添加两个数字并返回结果。 它不会做任何事情。您的其他方法也是如此。

而方法的目的似乎是改变底层对象的状态。但正如所说;当前的实施不会改变该状态。

希望这足以帮助您自己解决问题。

附注:阅读有关Java语法的内容。你额外的一对括号......也没有做任何事情。