es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo retornar elementos correspondientes como un arreglo en Java

En el código que se muestra a continuación, estoy tratando de implementar el método getItemByManufacturer, que debería devolver la matriz de elementos para el fabricante que estamos probando. He intentado obtener la matriz de elementos para un fabricante en particular, pero se imprime el hashcode. ¿Por qué sucede esto? También he anulado el método toString. Cualquier ayuda será muy apreciada.

“`java
public class Item{

<pre><code>private long serialNumber;
private String itemName;
String manufacturer;
private int warrantyDays;
private double rating;

Item(String itemName, String manufacturer, long serialNumber, double rating){
this.serialNumber = serialNumber;
this.itemName = itemName;
this.manufacturer = manufacturer;
this.rating = rating;
}

public String toString(){
return itemName + "\t" + manufacturer + "\t\t" + serialNumber + "\t" + rating;
}

public static String[] getItemByManufacturer(Item[] item, String manufacturer){
String[] matchedItems = new String[item.length];
for(int i =0; i<item.length; i++){
if(item[i].manufacturer.equals(manufacturer)){
matcheditems[i] = item[i].tostring();
}
else{
system.out.println("invalid input");
}
}
return matcheditems;
}
</code></pre>

}

public class driver{

<pre><code>public static void main(string[] args){

item[] item = new item[5];
item[0] = new item("watch", "dorond", 23945357, 6.5);
item[1] = new item("sunglass", "niko", 13945357, 6.5);
item[2] = new item("blender", "decker", 33945357, 6.5);
item[3] = new item("bottle", "decker", 43945357, 6.5);
item[4] = new item("bag", "wtravel", 53965307, 6.5);

system.out.println(item.getitembymanufacturer(item, "decker"));
</code></pre>

}
}
“` i++){=”” if(item[i].manufacturer.equals(manufacturer)){=”” matcheditems[i]=”item[i].toString();” }=”” else{=”” system.out.println(“invalid=”” input”);=”” }=”” }=”” return=”” matcheditems;=”” }=”” }=”” public=”” class=”” driver{=”” public=”” static=”” void=”” main(string[]=”” args){=”” item[]=”” item=”new” item[5];=”” item[0]=”new” item(“watch”,=”” “dorond”,=”” 23945357,=”” 6.5);=”” item[1]=”new” item(“sunglass”,=”” “niko”,=”” 13945357,=”” 6.5);=”” item[2]=”new” item(“blender”,=”” “decker”,=”” 33945357,=”” 6.5);=”” item[3]=”new” item(“bottle”,=”” “decker”,=”” 43945357,=”” 6.5);=”” item[4]=”new” item(“bag”,=”” “wtravel”,=”” 53965307,=”” 6.5);=”” system.out.println(item.getitembymanufacturer(item,=”” “decker”));=”” }=”” }=””></item.length; i++){
if(item[i].manufacturer.equals(manufacturer)){
matcheditems[i] = item[i].tostring();
}
else{
system.out.println(“invalid input”);
}
}
return matcheditems;
}
}

public class driver{

public static void main(string[] args){

    item[] item = new item[5];
    item[0] = new item("watch", "dorond", 23945357, 6.5);
    item[1] = new item("sunglass", "niko", 13945357, 6.5);
    item[2] = new item("blender", "decker", 33945357, 6.5);
    item[3] = new item("bottle", "decker", 43945357, 6.5);
    item[4] = new item("bag", "wtravel", 53965307, 6.5);

    system.out.println(item.getitembymanufacturer(item, "decker"));

}
}
“`>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual se imprime el hashcode es porque el arreglo matchedItems es de tipo String y se le están asignando objetos Item, lo cual no se puede hacer. En su lugar, el arreglo matchedItems debería ser de tipo Item y se debería llamar al método toString() en cada objeto item antes de asignarlo al arreglo matchedItems.

    El código corregido para el método getItemByManufacturer() debería lucir así:

    public static Item[] getItemByManufacturer(Item[] item, String manufacturer) {
        Item[] matchedItems = new Item[item.length];
        int index = 0;
        for (int i = 0; i < item.length; i++) {
            if (item[i].manufacturer.equals(manufacturer)) {
                matchedItems[index] = item[i];
                index++;
            }
        }
        if (index == 0) {
            System.out.println("No se encontraron elementos para el fabricante dado");
            return null;
        }
        Item[] finalItems = new Item[index];
        for (int i = 0; i < index; i++) {
            finalItems[i] = matchedItems[i];
        }
        return finalItems;
    }
    

    Y para imprimir los elementos, se debe llamar al método toString() en cada elemento retornado por el método. El código corregido en la clase Driver debería lucir así:

    Item[] items = Item.getItemByManufacturer(item, "Decker");
    if (items != null) {
        for (Item i : items) {
            System.out.println(i.toString());
        }
    }
    

    Esto imprimirá los elementos para el fabricante dado.

Comments are closed.