我的家庭作业的一部分是将三个double
变量转换为一个String
并从main方法中打印出来。我创建了一个单独的类,在其中尝试创建字符串。当我尝试从main方法打印字符串时,我不知道该怎么做。
主要班级
public static void main(String[] args) {
System.out.println(Point.toString());
}
点
public class Point {
public String toString(Double xVal, Double yVal, Double zVal){
String p= Double.toString(this.xVal) + ":" + Double.toString(this.yVal) +
":" + Double.toString(this.zVal);
return p;
}
}
这只是我代码的一部分,有人可以在我尝试打印字符串的那部分帮助我吗?
答案 0 :(得分:3)
似乎您试图创建某种实用程序类,所以...
首先,您需要制作用于打印Point
类 static
中的值的方法,因此无需在以下位置创建Point
的实例叫它。
第二,我强烈建议在类Point
中更改方法名称,因为已经从Object
继承了toString
方法。这可能会引起混乱,因为继承方法的目标与您为此toString
方法创建的目标不同。
此外,在方法内部要小心,以使用接收到的值作为参数而不是(缺少)实例属性。也就是说,使用值xVal
,yVal
和zVal
,而不是this.xVal
,this.yVal
和this.zVal
。
所以,这将是这种方式:
public class Point {
// changed from `toString` to `convertToString`, use the name which fits better your needs, except `toString`
public static String convertToString(Double xVal, Double yVal, Double zVal) {
// use `xVal`, not `this.xVal` and the same for the other variables
String p = Double.toString(xVal) + ":" + Double.toString(yVal) + ":" + Double.toString(zVal);
return p;
}
}
然后在您的主班:
public class Main {
public static void main(String[] args) {
System.out.println(Point.convertToString(1d, 2d, 3d)); // you can replace this sample values with the real ones
}
}
答案 1 :(得分:1)
当然,有很多方法可以执行此操作,但是使用toString
的“正确”方法是设置x
,y
和z
的值类的属性(以及(可选的)那些属性的构造函数,获取器和设置器),并让toString
打印当前实例的这些属性的值。
public class Point {
Double xVal, yVal, zVal;
public Point(Double x, Double y, Double z) {
this.xVal = x;
this.yVal = y;
this.zVal = z;
}
public String toString() {
return String.format("%s:%s:%s", this.xVal, this.yVal, this.zVal);
}
}
在这里,String.format("%s:%s:%s", ...)
是使用三个数字来format the string的一种更好的方法,但是您也可以保留自己的数字。第n个%s
将自动将该位置的参数转换为字符串并将其插入该位置。您也可以使用%.2f
用于具有更多选项的特定浮点格式。
您可以使用给定的坐标创建Point
类的新实例并进行打印。此处,您不必显式调用toString
,因为println
尝试将其参数转换为字符串时会自动调用它。
public static void main(String[] args) {
Point p = new Point(1.1, 2.2, 3.3);
System.out.println(p);
}
答案 2 :(得分:0)
您需要创建Point类的对象,然后以三个double值作为参数调用toString方法,就像您在Point类中定义的一样。
public static void main(String[] args) {
Point p = new Point();
System.out.println(p.toString(2.0,3.5,4.6));
}
答案 3 :(得分:0)
我认为正确的方法是使用其参数创建一个新点并覆盖继承的toString方法:
public class Point{
Double xVal; Double yVal; Double zVal;
void Point(Double xVal, Double yVal, Double zVal)
{
this.xVal = xVal;
this.yVal = yVal;
this.zVal = zVal;
}
@Override
public String toString(){
String p= Double.toString(this.xVal) + ":" + Double.toString(this.yVal) +
":" + Double.toString(this.zVal);
return p;
}
}
主要的:
public static void main(String[] args) {
Point p = new Point(1.3,2.0,.30);
System.out.println(p.toString());
}