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(&# 34;%。2f&#34;,mylist.get(2))但它没有用。
答案 0 :(得分:2)
将您的列表声明为ArrayList<Loan> mylist = new ArrayList<Loan>();
而不是ArrayList<Object> mylist = new ArrayList<Object>();
,然后您可以通过执行以下操作获得预期结果:
System.out.printf("%.2f",mylist.get(0).loan);
顺便说一句,理想情况下,一个类的所有字段都应该是私有的,并在必要时创建getter和setter。因此,在这种情况下,您可以在loan
类中设置Loan
私有,然后为其创建一个getter。
答案 1 :(得分:0)
您正在使用&#34; Object&#34;类型的ArrayList。所以你可以把它们放到这些列表中。
将ArrayList的类型设置为&#34; Loan&#34;
ArrayList<Loan> mylist = new ArrayList<Loan>();
你可以从listitems获得贷款价值。
printf("%.2f",mylist.get(0).loan);
答案 2 :(得分:0)
据我所知mylist.get(0)是一个Loan类型的对象而不是double,这可能就是为什么它不起作用,因为printf方法是正确的方法。
你也应该让你的ArrayList成为一个ArrayList,它更干净,可能帮助你避免混淆类型从开头。
答案 3 :(得分:0)
您必须将double类型字段转换为String,以便返回类型正确,并且在转换过程中指定所需字符串的格式,在这种情况下指定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;
}
}