1
public static void main(String[] args) throws FileNotFoundException {
    double agentID;
    String type;
    double price;
    Set<String> types = new TreeSet<String>();
    Map<Double, Double> agents = new TreeMap<Double, Double>();
    Scanner console = new Scanner(System.in);     
    String propertyID;
    double totalPrice = 0;

    System.out.print ("Please enter file name: ");
    String inputFileName = console.next();
    File inputFile = new File(inputFileName);
    Scanner in = new Scanner(inputFile);
    while (in.hasNextLine()) {
        propertyID = in.next();
        type = in.next(); 
        price = in.nextDouble();
        agentID = in.nextDouble();
        type = type.toUpperCase();   
        types.add(type);
        if (agents.containsValue(agentID)) {
            agents.put(agentID, agents.get(agentID)+price);
        }
        else {
            totalPrice = price;
            agents.put(agentID, totalPrice);
        }
    }
    in.close();
    System.out.println(types);
    System.out.println(agents);
}

我正在尝试更新地图中totalPrice的值agentID是否已包含在agents地图中。当我运行程序时,它会输出分配给键的初始值,agentID但不会输出totalPrice + price. 我已经查看了这里的问题并查看了 API 文档,但我没有取得任何进展。任何帮助,将不胜感激。

4

3 回答 3

3

您似乎正在尝试将 agentId 与价格映射。所以我认为你需要使用的是

if (agents.containsKey(agentID)) { ... }

有关详细信息,请参阅官方 containsKey javadoc

请尝试简化问题中的代码(删除文件读取和其他不需要的信息),以便更容易确定问题所在。

于 2012-05-17T18:28:41.533 回答
3

您正在检查价值,而不是您应该检查代理是否在地图中可用

改变

if (agents.containsValue(agentID))

if (agents.containsKey(agentID))

因为你agentID在这里用作关键

agents.put(agentID, agents.get(agentID)+price);
于 2012-05-17T18:29:56.617 回答
1

在您的 TreeMap 中,您使用agentID 作为键,使用totalPirce 作为值,因此在您的代码中应该是

agent.containsKey(agentID)

不是

agent.containsValue(agentID)

问候伊苏鲁

于 2012-05-17T19:19:38.260 回答