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文档,但我没有取得任何进展。任何帮助将不胜感激。
答案 0 :(得分:3)
您似乎正在尝试使用价格映射agentId。所以我认为你需要使用的是
if (agents.containsKey(agentID)) { ... }
有关详细信息,请参阅official containsKey javadoc。
请尝试简化问题中的代码(删除文件读取和其他不需要的信息),以便更容易确定问题所在。
答案 1 :(得分:3)
您正在检查值,而应检查代理是否在地图中可用
更改
if (agents.containsValue(agentID))
到
if (agents.containsKey(agentID))
因为您在这里使用agentID
作为关键
agents.put(agentID, agents.get(agentID)+price);
答案 2 :(得分:1)
agents.containsKey(AGENTID)
不是
agents.containsValue(AGENTID)
问候 Isuru