【问题标题】:Java - creating a method in BlueJJava - 在 BlueJ 中创建方法
【发布时间】: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() 方法。你没有教科书吗?

标签: java bluej


【解决方案1】:

您可以对所有方法和变量使用私有,然后通过创建对象来调用该方法。 Java 中的对象可以像Circle run = new Circle(); 这样创建,然后调用所有私有方法,例如: run.Circle(); run.MakeVisible(); 对象必须有类名,语法如下:

ClassName ObjectName = new ClassName(); 调用该方法的语法是:Objectname.MethodName();

确保对象名称对于方法调用也是正确的。 同一个对象可用于调用多个方法。您必须为该对象的所有方法调用方法,并且必须将其放置在:
public static void main() 
{ 
//object creation and all your method calls here
}

或者更具体地说, main 中的代码就像

public static void main()
{
    Circle run = new Circle();
    run.Circle();
    run.MakeVisible();
}

为防止混淆,最好将方法名称从 Circle 更改为另一个名称,因为该类也具有相同的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 2017-11-29
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2019-07-08
    相关资源
    最近更新 更多