【发布时间】:2014-04-02 18:54:32
【问题描述】:
我对以下练习有疑问(我正在使用 BlueJ):
他们要求我在 House 类中创建以下方法,而不对 Circle 类进行任何更改
- 名称:getPositionsTwoSuns
- 返回值:下面描述的字符串
字符串说明:从图片中每个太阳的aXPosition和aYPosition坐标返回“x=12,y=7”形式的字符串;
为了分隔两个太阳的位置,我们可以使用“|”例如。
这是 House 类的副本:
public class House
{
private Square aWall;
private Square aWindow;
private Triangle aRoof ;
private Circle aSun;
private Circle aSun2;
/**
* Constructor for objects of class House
*/
public House()
{
this.aWall= new Square();
this.aWall.changeSize( 100 );
this.aWindow= new Square();
this.aWindow.changeColour( "black" );
this.aRoof= new Triangle();
this.aRoof.changeSize( 140, 50 );
this.aSun= new Circle();
this.aSun.changeColour( "yellow" );
this.aSun.changeSize( 60 );
this.aSun2= new Circle();
this.aSun2.changeColour( "green" );
this.aSun2.changeSize( 60 );
this.aWall.MakeVisible();
this.aWindow.MakeVisible();
this.aRoof.MakeVisible();
this.aSun.MakeVisible();
this.aSun2.MakeVisible();
} // Picture()
/**
* New function
*/
public String getPositionsTwoSuns()
{
return "x=aSun.aXPosition y=aSun.aYPosition | x=aSun2.aXPosition y=aSun2.aYPosition";
}
/**
* Draw this picture.
*/
public void draw()
{
this.aWall.MakeVisible();
this.aWindow.MakeVisible();
this.aRoof.MakeVisible();
this.aSun.MakeVisible();
this.aSun2.MakeVisible();
} // draw()
} // House
这是 Circle 类:
import java.awt.geom.Ellipse2D;
public class Circle
{
private int aDiameter;
private int aXPosition;
private int aYPosition;
private String aColour;
private boolean aIsVisible;
/**
* Makes a new Circle
*/
public Circle()
{
this.aDiameter= 30;
this.aXPosition= 20;
this.aYPosition= 60;
this.aColour= "blue";
this.aIsVisible= false;
} // Circle()
/**
* Makes a new circle with the default values
*/
public Circle( final int pDiameter, final int pXPosition, final int pYPosition, final String pColour )
{
this.aDiameter= pDiameter;
this.aXPosition= pXPosition;
this.aYPosition= pYPosition;
this.aColour= pColour;
this.aIsVisible= false;
} // Circle()
/**
* Make the Circle visible.
*/
public void MakeVisible()
{
this.aIsVisible= true;
this.draw();
} // MakeVisible()
/**
* New function
*/
public int getPosition()
{
return 1000*aXPosition+aYPosition;
}
}
我尝试创建该方法未成功,但是一旦编译完成,并且在创建了一个名为house1 的新对象后,该方法返回给我这个:
"x=aSun.aXPosition y=aSun.aYPosition | x=aSun2.aXPosition y=aSun2.aYPosition";
任何帮助将不胜感激
【问题讨论】:
-
好吧,鉴于您的方法确实是
return "x=aSun.aXPosition y=aSun.aYPosition | x=aSun2.aXPosition y=aSun2.aYPosition",这并不令人惊讶。您需要将文字字符串(如"x=")与变量值连接起来。 Java 连接运算符是+。 -
感谢您的回答,但我只是不知道如何连接,您可以举个例子解释一下吗?
-
Google 是您的朋友。这是我在谷歌上搜索“Java 中的连接”时得到的结果:stackoverflow.com/questions/3753869/…。用谷歌真的有那么难吗?
-
谢谢。现在唯一的问题是我得到了这个:aXPosition 在 Circle 中具有私有访问权限;我知道我必须使用在 Circle 中创建的 getPosition() 方法,但我不知道怎么做?
-
aSun.getPosition()允许在变量aSun引用的对象上调用getPosition()方法。你没有教科书吗?