This question already has answers here:
How do I print my Java object without getting “SomeType@2f92e0f4”?
(10个答案)
3年前关闭。
我正在学习使用比较器,并且在执行程序时在控制台中得到一个非常奇怪的结果:
我定义了一个称为Zapato的对象,其属性值在向用户询问后通过参数传递:
然后,我根据颜色或价格创建了一些比较器。
在Main中,我要求输入值,创建3个对象并将它们保存在ArrayList中。然后用户必须选择比较模式,然后调用所选比较模式的类,并对列表进行排序后,将其打印为3个对象排序:
但是,当程序打印它们System.out.println(listaZapatos)时,它应该看起来像
45罗莎32,56阿祖尔21,34佛得角46
但是我却在控制台上收到了这个:
[Main.Zapato @ 2ff4acd0,Main.Zapato @ 279f2327,Main.Zapato @ 54bedef2]
每当我在System.out.println(“ Zapato introducido es:” + listaZapatos.get(2))中索要使用引入值创建的对象时,它也会出现,因此我收到如下信息:
Main.Zapato@2ff4acd0
在您的
(10个答案)
3年前关闭。
我正在学习使用比较器,并且在执行程序时在控制台中得到一个非常奇怪的结果:
我定义了一个称为Zapato的对象,其属性值在向用户询问后通过参数传递:
public class Zapato {
int talla;
String color;
int precio;
public Zapato (int talla,String color,int precio){
this.talla = talla;
this.color = color;
this.precio = precio;
}
}
然后,我根据颜色或价格创建了一些比较器。
public class OrdenarPorColor implements Comparator<Zapato>{
@Override
public int compare(Zapato z1, Zapato z2) {
return z1.color.compareTo(z2.color);
}
}
在Main中,我要求输入值,创建3个对象并将它们保存在ArrayList中。然后用户必须选择比较模式,然后调用所选比较模式的类,并对列表进行排序后,将其打印为3个对象排序:
//Before this there is code repeated where I ask the values for the other 2 objects
System.out.println("Introduzca la talla,el color y la talla de los zapatos: ");
System.out.println("Talla: ");
talla = Integer.parseInt(sc.nextLine());
System.out.println("Color: ");
color = sc.nextLine();
System.out.println("Precio: ");
precio = Integer.parseInt(sc.nextLine());
listaZapatos.add(new Zapato(talla,color,precio));
System.out.println("Zapato introducido es: " + listaZapatos.get(2));
System.out.println("Escriba la opcion para comparar:");
System.out.println("1-Por talla\n2-Por color\3-Por precio");
System.out.println("Opcion: ");
int opcion = sc.nextInt();
switch (opcion){
case 1:
Collections.sort(listaZapatos,new OrdenarPorTalla());
System.out.println(listaZapatos);
break;
case 2:
Collections.sort(listaZapatos,new OrdenarPorColor());
System.out.println(listaZapatos);
break;
case 3:
Collections.sort(listaZapatos,new OrdenarPorPrecio());
System.out.println(listaZapatos);
break;
}
return;
但是,当程序打印它们System.out.println(listaZapatos)时,它应该看起来像
45罗莎32,56阿祖尔21,34佛得角46
但是我却在控制台上收到了这个:
[Main.Zapato @ 2ff4acd0,Main.Zapato @ 279f2327,Main.Zapato @ 54bedef2]
每当我在System.out.println(“ Zapato introducido es:” + listaZapatos.get(2))中索要使用引入值创建的对象时,它也会出现,因此我收到如下信息:
Main.Zapato@2ff4acd0
最佳答案
您需要在Zapato类中重写toString
实现。当打印一个Collection时,在内部该方法将在该Collection中的每个对象上调用toString()
。默认的toString
实现为您提供所需的数据。
这样的事情会有所帮助:
@Override
public String toString()
{
return color + ":" + talla;
}
在您的
Zapato
课中07-24 15:26