如何将return对应的item作为数组在java
How to return corresponding items as an array in java
在下面的代码中,我试图实现方法 getItemByManufacturer,它应该 return 我们测试的制造商的项目数组。我试图获取特定制造商的项目数组,但正在打印哈希码。这是为什么 ?我也重写了 toString 方法。任何帮助将不胜感激。
public class Item{
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];
}
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")));**
}
}
那是因为数组没有toString方法,所以打印的时候会得到hashcode。打印它们的一种方法是仅使用内部 java 库 Arrays.toString
:
System.out.println(Arrays.toString(Item.getItemByManufacturer(item,"Decker"));
或通过使用 Arrays.asList
:
将数组转换为列表
System.out.println(Arrays.asList(Item.getItemByManufacturer(item,"Decker"));
此外,请注意,您应该将条件 items[i].manufacturer == manufacturer
更改为 items[i].manufacturer.equals(manufacturer)
,字符串必须始终使用 equals
方法进行比较。此外,如果条件匹配,您只是 returning 整个数组,因此您不会获得所需的结果。我建议这个解决方案,因为数组不是动态大小的,只是 return 一个 List:
更容易
public class Item{
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 List<Item> getItemByManufacturer(Item[] items, String manufacturer){
List<Item> matchedItems = new ArrayList<Item>();
for(int i =0; i< items.length;i++){
if( items[i].manufacturer.equals(manufacturer)){
matchedItems.add(items[i]);
}
}
if(matchedItems.isEmpty()){
System.out.println("Invalid Input");
}
return mathedItems;
}
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"));
}
在下面的代码中,我试图实现方法 getItemByManufacturer,它应该 return 我们测试的制造商的项目数组。我试图获取特定制造商的项目数组,但正在打印哈希码。这是为什么 ?我也重写了 toString 方法。任何帮助将不胜感激。
public class Item{
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];
}
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")));**
}
}
那是因为数组没有toString方法,所以打印的时候会得到hashcode。打印它们的一种方法是仅使用内部 java 库 Arrays.toString
:
System.out.println(Arrays.toString(Item.getItemByManufacturer(item,"Decker"));
或通过使用 Arrays.asList
:
System.out.println(Arrays.asList(Item.getItemByManufacturer(item,"Decker"));
此外,请注意,您应该将条件 items[i].manufacturer == manufacturer
更改为 items[i].manufacturer.equals(manufacturer)
,字符串必须始终使用 equals
方法进行比较。此外,如果条件匹配,您只是 returning 整个数组,因此您不会获得所需的结果。我建议这个解决方案,因为数组不是动态大小的,只是 return 一个 List:
public class Item{
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 List<Item> getItemByManufacturer(Item[] items, String manufacturer){
List<Item> matchedItems = new ArrayList<Item>();
for(int i =0; i< items.length;i++){
if( items[i].manufacturer.equals(manufacturer)){
matchedItems.add(items[i]);
}
}
if(matchedItems.isEmpty()){
System.out.println("Invalid Input");
}
return mathedItems;
}
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"));
}