【问题标题】:how to return two decimal places string type如何返回两位小数的字符串类型
【发布时间】:2018-10-30 08:57:14
【问题描述】:
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 方法使贷款和圆圈返回两位小数我怎样才能做到这一点....对象应该在对象的 Arraylist 中。我尝试使用 System.out.printf("% .2f",mylist.get(2)) 但它没有用。

【问题讨论】:

    标签: java arraylist methods return


    【解决方案1】:

    将您的列表声明为ArrayList&lt;Loan&gt; mylist = new ArrayList&lt;Loan&gt;(); 而不是ArrayList&lt;Object&gt; mylist = new ArrayList&lt;Object&gt;();,然后您可以通过以下方式获得预期结果:

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

    顺便说一句,理想情况下,类的所有字段都应该是私有的,并在必要时创建 getter 和 setter。因此,在这种情况下,您可以在 Loan 类中将 loan 设为私有,然后为其创建一个 getter。

    【讨论】:

      【解决方案2】:

      您必须将双精度类型字段转换为字符串,以便返回类型正确,并在转换过程中指定您想要的字符串格式,在这种情况下指定 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;
          }
      }
      

      【讨论】:

        【解决方案3】:

        您正在使用“对象”类型的 ArrayList。因此,您可以将所有内容都放入这些列表中。

        将ArrayList的类型设置为“贷款”

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

        比你可以从 listitems 获得的 loanvalue。

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

        【讨论】:

          【解决方案4】:

          据我所知,mylist.get(0) 是 Loan 类型的对象,而不是双精度对象,这可能是它不起作用的原因,因为 printf 方法是解决此问题的正确方法。

          您还应该将 ArrayList 改为 ArrayList,它更简洁,并且可能帮助您避免从一开始就混淆类型。

          【讨论】:

            猜你喜欢
            • 2023-03-10
            • 1970-01-01
            • 2015-09-17
            • 2020-09-05
            • 1970-01-01
            • 2013-05-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多