如何使用方法显示对象的参数

时间:2014-04-06 21:44:40

标签: java

public class Vector
 {
   private double x;
   private double y;


public Vector (double x_comp, double y_comp)
{
  x= x_comp;
  y= y_comp;  
}

public double getX ()
{

}


public double getY ()
{

}


public double magnitude ()
{

}


public double dotProduct (Vector vec)
{

}


public Vector addVectors (Vector vec)
{
   // return new Vector (add parameters);
}


public Vector unitVector ()
{
    // return new Vector (add parameters);
}


public double angleBetween (Vector vec)
{

}


public String formatAsString ()
{

}
public static void main(String[]args){
   Vector v1 = new Vector (-3, 2);
}
} 

我正在构建一个处理向量的程序。但是,对于前两种方法,我想知道如何显示Vector对象的x坐标和y坐标。反正我是否使用这些方法来显示我创建的Vector对象的坐标?

3 个答案:

答案 0 :(得分:3)

在Java中,所有类都隐式扩展Object类型。 Object类指定方法toString()。此方法旨在输出表示类的有意义的 String。这可以在子类中重写。

@Override
public String toString()
{
    return "Meaningful String";
}

在您的示例中,它可以是:

public String toString()
{
    return "X: " + x + ", Y: " + y;
}

注意 :对于包含大量参数的对象,最好使用StringBuilder。这提供了String的可变版本,因此您不需要连接多个值并创建多个String类型的实例。

例如,如果你有一个更复杂的Vector,它描述了一个与时间有关的三维运动,那么你可能有xyz和{{1 }}。在这种情况下,看起来像以下内容的t将更有效:

toString()

这可以通过调用类似的东西来调用。

public String toString()
{
    StringBuilder builder = new StringBuilder();
    builder.append("X: ");
    builder.append(x);
    builder.append("Y: ");
    builder.append(y);
    builder.append("Z: ");
    builder.append(z);
    builder.append("T: ");
    builder.append(t);

    return builder.toString();
}

答案 1 :(得分:1)

显示值是用户界面的一部分。 Vector的实际实现是应用程序逻辑的一部分。这些区别既适用于简单程序,也适用于非常复杂的应用程序。

通常,将UI与应用程序逻辑/实现分开是有益的。在你的情况下,所有这些真正转化为你只是想在更高的层次上做到这一点。所以:

  1. 实施getter以返回正确的值。

  2. 在您的应用程序中,只需要一个简单的System.out.println("The X coord is " + myVector.getX())即可。

  3. 如果不直接向Vector添加打印输出代码,您现在可以自由地以任何格式显示(或不显示)值。

    您也可以覆盖toString(),但通常这只是为了调试(可能是您的目标),而不是有意义的格式化。这里的其他答案很好地描述了该选项(例如christopher's answer)。然后你可以简单地System.out.println(myVector)

    请注意,上述概念仍然适用于toString():您仍然在更高级别打印,而不是从Vector本身打印,这是此处的回家点。

答案 2 :(得分:0)

覆盖toString方法并打印x和y

@Override
public String toString() {
   return "x value is "+ x ", y value is " + y;
}