好的,对于上课,我一直在研究一些长方形的问题。我遇到的一个问题是创建一种方法,用一个用户定义的数量来增加椭圆形的高度和宽度。
这是我的主要内容:
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
但它只打印出原始的高度和宽度。
答案 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 的参数值。
答案 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语法的内容。你额外的一对括号......也没有做任何事情。