как вернуть строковый тип с двумя десятичными знаками - PullRequest
0 голосов
/ 20 мая 2018
import java.util.ArrayList;
import java.util.Scanner;

class Loan
{
    double loan;
    public String toString()
    {
        return "Loan: " + loan;
    }
}
class Frame
{
    String framename;
    public String toString()
    {
        return "Frame: " + framename;
    }
}
class Circle
{
    double radius;
    public String toString()
    {
        return "Circle: " + radius;
    }
}
class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        Loan loan = new Loan();
        Frame frame = new Frame();
        Circle circle = new Circle();

        loan.loan = input.nextDouble();
        frame.framename = input.next();
        circle.radius = input.nextDouble();

        ArrayList<Object> mylist = new ArrayList<Object>();
        mylist.add(loan);
        mylist.add(frame);
        mylist.add(circle);

        System.out.println(mylist.get(0));
        System.out.println(mylist.get(1));
        System.out.println(mylist.get(2));

    }
}

Я хочу получить ссуду, и круг возвращает два десятичных знака, используя метод toString. Как мне этого добиться ... объекты должны быть в массиве объектов. Я пытался использовать System.out.printf ("%. 2f", mylist.get (2)), но это не сработало.

Ответы [ 4 ]

0 голосов
/ 21 мая 2018

Необходимо преобразовать поля двойного типа в строку, чтобы тип возвращаемого значения был правильным, и в процессе преобразования вы указываете, какой формат строки вы хотите в этом случае, указать 2 десятичных знака.

class Loan
{
    double loan;
    public String toString()
    {
        String loanstring = String.format ("%.2f", loan);
        return "Loan: " + loanstring;
    }
}
class Circle
{
    double radius;
    public String toString()
    {
        String radiusstring = String.format ("%.2f", radius);
        return "Circle: " + radiusstring;
    }
}
0 голосов
/ 20 мая 2018

Вы используете ArrayList типа «Объект».Таким образом, вы можете поместить в этот список все, что угодно.

Установите тип ArrayList на «Loan»

ArrayList<Loan> mylist = new ArrayList<Loan>();

Чем вы можете получить значение кредита из списка элементов.

printf("%.2f",mylist.get(0).loan);
0 голосов
/ 20 мая 2018

Насколько я вижу, mylist.get (0) - это объект типа Loan, а не double, поэтому, вероятно, он не работает, потому что подход printf является правильным подходом.

вместо этого вы должны сделать ArrayList ArrayList, он чище и, возможно, помог бы вам избежать путаницы с самого начала.

0 голосов
/ 20 мая 2018

Объявите ваш список как ArrayList<Loan> mylist = new ArrayList<Loan>(); вместо ArrayList<Object> mylist = new ArrayList<Object>();, тогда вы можете получить ожидаемый результат, выполнив:

 System.out.printf("%.2f",mylist.get(0).loan);

Кроме того, в идеале все поля класса должны быть приватными и создаватьдобытчики и сеттеры, где это необходимо.Таким образом, в этом случае вы можете сделать loan закрытым в классе Loan, а затем создать для него метод получения.

...