Конвертировать double в строку и вернуть ее в main - PullRequest
0 голосов
/ 15 мая 2019

Часть моей домашней работы - преобразовать три double переменные в одну String и распечатать ее из основного метода. Я создал отдельный класс, где я пытаюсь создать строку. Когда я пытаюсь напечатать строку из метода main, я не понимаю, как это сделать.

Main-класс

public static void main(String[] args) {
    System.out.println(Point.toString());  
}

Point

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; 
    }
}

Это только часть моего кода, может кто-нибудь помочь мне с той частью, где я пытаюсь напечатать строку?

Ответы [ 4 ]

3 голосов
/ 15 мая 2019

Кажется, вы пытались создать какой-то служебный класс, поэтому ...

Сначала вам нужно создать метод, который печатает значения в Point class static, поэтому вам не нужно создавать экземпляры Point для его вызова.

Во-вторых, я настоятельно рекомендую изменить имя метода в классе Point, потому чтоtoString метод, уже унаследованный от Object.Это может привести к путанице, поскольку цель унаследованного метода не совпадает с той, для которой вы создали этот метод 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 голос
/ 15 мая 2019

Конечно, есть много способов сделать это, но "правильный" способ, используя 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", ...) являетсялучший способ отформатировать строку с тремя числами, но вы также можете оставить свое.Nth %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);
}
0 голосов
/ 15 мая 2019

Я думаю, что правильный путь - создать новую точку с ее параметрами и переопределить унаследованный метод 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());
}
0 голосов
/ 15 мая 2019

Вам необходимо создать объект класса Point, затем вызвать метод toString с тремя двойными значениями в качестве аргументов, как вы определили в классе Point.

   public static void main(String[] args) {
    Point p = new Point();

    System.out.println(p.toString(2.0,3.5,4.6));  
    }
...