我的hashmap只是放置零值



为了帮助自己学习Java,我正在使用JFOR GUI创建一个二十一点程序,其中包括您可以创建的帐户,并保持您在每个游戏上使用的运行平衡。我有一个blackjackapp.jform类,这是主要类。这些帐户存储在.txt文件中,并使用包含ReadFile和WriteFile方法的帐户类读取。我创建了一个示例txt文件,名为accounts.txt,其中具有以下值:

John Doe>> 1000000

杰克·布莱克>> 1

Bob Dole>> 987654321

(实际txt文件中的行之间没有空的空格(

我有一种读取文本文件并将这些值附加到hashmap的方法。这是我对该方法的代码。

public void readFile()
{
   accountsMap.clear();
   BufferedReader br;
   try
   {    
     br = new BufferedReader(new FileReader("Accounts.txt"));
     String nextLine = br.readLine();
        while(nextLine != null)
        {
           String lineString[] = nextLine.split(">>");
           Integer accountBalance = Integer.parseInt(lineString[1]);
           System.out.println(lineString[0] + " " + lineString[1] + " " + 
           accountBalance);
           accountsMap.put(lineString[0], accountBalance); 
           nextLine = br.readLine();  
        }
        br.close();
   }
   catch(IOException frex)
   {System.out.println("An error has occurred while reading the file");}
}

这是我对Jform类的相关代码,仅包括参考的最高部分

public class BlackjackApp extends javax.swing.JFrame {
Account a = new Account();
String account;
Integer accountBalance;
HashMap accountsMap = a.getAccountsMap();

public void fillAccountNameBox()
{
   for (int i = 0; i < accountsMap.size(); i++)
   {
       accountNameBox.addItem((String) accountsMap.get(i));
   }

}
public BlackjackApp() {
    initComponents();
    a.readFile();
    fillAccountNameBox(); //fills comboBox component w/ list of hashMap keys
    System.out.println(accountsMap.keySet());
    for(int i = 0; i < accountsMap.size(); i++)
        System.out.println(accountsMap.get(i));
}

system.out.println代码用于调试。这是输出:

John Doe 1000000 1000000
Jack Black 1 1
Bob Dole 987654321 987654321
[Bob Dole, John Doe, Jack Black]
null
null
null

我的问题是:为什么我的hashmap放入正确的键,而将其值无效?Linestring阵列正正确填充,整数帐户平均数也是如此,但是当涉及到实际将密钥/值对放入hashmap中时,它只会将键放入键,即使帐户余量不为null,也将其值留下了null。为什么是这样?我尝试搜索许多有关此问题的建议,但他们的建议都不适合我。我必须忽略某些东西,但是作为初学者,我很难认识到问题所在。

问题依赖于您打印信息的方式。MAP.GET方法期望您通过一个键传递一个参数,其值您想要。在for循环中,您要求附加到键0、1和2的值 - 因此,零值。更改您的代码:

for(String key : accountsMap.keySet())
    System.out.println(accountsMap.get(key));

您可以看到,我还更改了用于使用for-each的for循环结构。

希望这对您有帮助。

您的地图完全包含您想要的包含的内容。问题是您的访问方式。

正如您指出的那样,地图中的键如下:

[Bob Dole, John Doe, Jack Black]

在最终的for循环中,您正在寻找访问映射到键012的值。由于这些键在地图中不存在,因此您将获得null

相关内容

  • 没有找到相关文章

最新更新