在哈希映射中显示故障 import java.util.HashMap; 导入java.util.Iterator; 导入java.util.Map; 导入java.util.Scanner; 导入java.util.Set; 公共类主类 { 静态扫描仪键盘=新扫描仪(System.in); 静态HashMap-hMap; 公共静态void createAHashMap() { System.out.print(“表示初始容量:”); int initialCapacity=keyboard.nextInt(); System.out.print(“表示负载系数:”); float loadFactor=keyboard.nextFloat(); hMap=新的HashMap(初始容量、负载因子); } 公共静态void insertProductInformations() { 整数值[]=新整数[3]; 系统输出打印(“\n输入产品的条形码编号:”); 值[0]=keyboard.nextInt(); System.out.print(“输入产品名称:”); String productName=键盘。下一步(); 系统输出打印(“输入产品数量:”; 值[1]=keyboard.nextInt(); 系统输出打印(“输入产品价格:”); 值[2]=keyboard.nextInt(); hMap.put(值、产品名称); } 公共静态void displayList() { Set=hMap.entrySet(); 迭代器迭代器=set.Iterator(); System.out.println(“\n条码号\t产品金额\t产品价格\t产品名称”); while(iterator.hasNext()) { Map.Entry mEntry=(Map.Entry)迭代器.next(); System.out.print(mEntry.getKey()+“\t\t”+mEntry.getValue()+“\n”); } } 公共静态void main(字符串[]args) { createAHashMap(); System.out.print(“\n输入以添加产品“1”\n”); System.out.print(“输入以显示产品'2'\n”); System.out.print(“输入您的选择:”); int entry=keyboard.nextInt(); while(条目!=-99) { 如果(条目==1) { insertProductInformation(); } 如果(条目==2) { 显示列表(); } System.out.print(“\n按下您的新选择(退出:-99):”; entry=keyboard.nextInt(); } } }

在哈希映射中显示故障 import java.util.HashMap; 导入java.util.Iterator; 导入java.util.Map; 导入java.util.Scanner; 导入java.util.Set; 公共类主类 { 静态扫描仪键盘=新扫描仪(System.in); 静态HashMap-hMap; 公共静态void createAHashMap() { System.out.print(“表示初始容量:”); int initialCapacity=keyboard.nextInt(); System.out.print(“表示负载系数:”); float loadFactor=keyboard.nextFloat(); hMap=新的HashMap(初始容量、负载因子); } 公共静态void insertProductInformations() { 整数值[]=新整数[3]; 系统输出打印(“\n输入产品的条形码编号:”); 值[0]=keyboard.nextInt(); System.out.print(“输入产品名称:”); String productName=键盘。下一步(); 系统输出打印(“输入产品数量:”; 值[1]=keyboard.nextInt(); 系统输出打印(“输入产品价格:”); 值[2]=keyboard.nextInt(); hMap.put(值、产品名称); } 公共静态void displayList() { Set=hMap.entrySet(); 迭代器迭代器=set.Iterator(); System.out.println(“\n条码号\t产品金额\t产品价格\t产品名称”); while(iterator.hasNext()) { Map.Entry mEntry=(Map.Entry)迭代器.next(); System.out.print(mEntry.getKey()+“\t\t”+mEntry.getValue()+“\n”); } } 公共静态void main(字符串[]args) { createAHashMap(); System.out.print(“\n输入以添加产品“1”\n”); System.out.print(“输入以显示产品'2'\n”); System.out.print(“输入您的选择:”); int entry=keyboard.nextInt(); while(条目!=-99) { 如果(条目==1) { insertProductInformation(); } 如果(条目==2) { 显示列表(); } System.out.print(“\n按下您的新选择(退出:-99):”; entry=keyboard.nextInt(); } } },java,Java,嗨 我创建了一个包含超市产品信息的哈希图。但是,我无法正确显示键值(数组)。它向我展示了除产品名称以外的无关内容。如何更正此问题?静态HashMap hMap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; public class mainClass { static Scanner k

我创建了一个包含超市产品信息的哈希图。但是,我无法正确显示键值(数组)。它向我展示了除产品名称以外的无关内容。如何更正此问题?

静态HashMap hMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class mainClass
{
    static Scanner keyboard = new Scanner(System.in);
    static HashMap <Integer[], String> hMap;

    public static void createAHashMap()
    {
        System.out.print("Express the initial capacity: ");
        int initialCapacity = keyboard.nextInt();
        System.out.print("Express the load factor: ");
        float loadFactor = keyboard.nextFloat();
        hMap = new HashMap <Integer[], String> (initialCapacity, loadFactor);       
    }

    public static void insertProductInformations()
    {
        Integer values[] = new Integer[3];
        System.out.print("\nEnter product's barcode number: ");
        values[0] = keyboard.nextInt();
        System.out.print("Enter product's name: ");
        String productName = keyboard.next();   
        System.out.print("Enter product's amount: ");
        values[1] = keyboard.nextInt();
        System.out.print("Enter product's price: ");
        values[2] = keyboard.nextInt(); 
        hMap.put(values, productName);
    }

    public static void displayList()
    {
        Set set = hMap.entrySet();
        Iterator iterator = set.iterator();
        System.out.println("\nBarcode Number\tProduct Amount\tProduct Price\tProduct Name");        
        while (iterator.hasNext()) 
        {
            Map.Entry mEntry = (Map.Entry) iterator.next();
            System.out.print(mEntry.getKey() + "\t\t" + mEntry.getValue() + "\n");
        }
    }

    public static void main(String[] args)
    {
        createAHashMap();
        System.out.print("\nEnter to add product '1'\n");
        System.out.print("Enter to display products '2'\n");
        System.out.print("Enter your choice: ");
        int entry = keyboard.nextInt();     
        while (entry != -99)
        {
            if (entry == 1)
            {
                insertProductInformations();
            }
            if (entry == 2)
            {
                displayList();
            }
            System.out.print("\nExpress your new choice (Exit: -99): ");
            entry = keyboard.nextInt();
        }       
    }
}
数组不适合作为
HashMap
中的键,因为具有完全相同元素的两个不同数组实例将被视为不同的键。这种行为是由于数组不重写
对象的
equals
方法,因此只有当
arr1==arr2
时,两个数组
arr1
arr2
才相等

钥匙的打印不是你的主要问题。这可以通过使用
array.toString
打印数组键轻松解决


我建议您将
HashMap
更改为
HashMap

我同意Eran的回答,即您不应选择键作为整数数组,但我认为使用Arrays.toString无法完全解决显示问题,因为它将以指定格式提供数组,而不是您需要的格式。您需要根据需要显式格式化数据。根据上述示例修改显示的示例可能是:-

static HashMap <Integer[], String> hMap;

是不是在
float loadFactor=keyboard.nextFloat()中输入错误;hMap=新的HashMap(初始容量、负载因子)
,意味着loadFactor是
float
,但您的hashmap存储的
字符串
?@Azat-Nugusbayev是相关的哈希表结构
public static void displayList()
{
    Set set = hMap.entrySet();
    Iterator iterator = set.iterator();
    System.out.println("\nBarcode Number\tProduct Amount\tProduct Price\tProduct Name");        
    while (iterator.hasNext()) 
    {
        Map.Entry mEntry = (Map.Entry) iterator.next();
        Integer[] values = (Integer[]) mEntry.getKey();
        System.out.print(values[0] + "\t" + values[1] + "\t" + values[2] + "\t" + mEntry.getValue() + "\n");
    }
}