Java 检查地图中的关键点

Java 检查地图中的关键点,java,Java,我有一个方法,它应该检查一个键是否在映射中,然后增加一个值 papers.add(paper); //add a paper to the paper collection papersOrdered.get(papers); //returns the papers if(!(papersOrdered.containsKey(paper))) { paperNo = 1; String noPaper = Integer.toString(

我有一个方法,它应该检查一个键是否在映射中,然后增加一个值

  papers.add(paper); //add a paper to the paper collection
    papersOrdered.get(papers); //returns the papers
    if(!(papersOrdered.containsKey(paper))) {
        paperNo = 1;
        String noPaper = Integer.toString(paperNo); //convert the paperNo integer to a String
        papersOrdered.put(papers,noPaper); //put the rooNo and the paper collection into the HashMap
        System.out.println("'" + paper + "'" + " has been added to the paper order. " + noPaper + " copy ordered" ); //a message to say a paper has been added
    }
    else{
        paperNo = paperNo ++;
        String noPaper = Integer.toString(paperNo); //convert the paperNo integer to a String
        papersOrdered.put(papers,noPaper); //put the rooNo and the paper collection into the HashMap
        System.out.println("'" + paper + "'" + " has been added to the paper order." + noPaper + " copies ordered" ); //a message to say a paper has been added
    }
    System.out.println("======================================================="); ; //a line to seperate text 
    System.out.println(" "); //a blank line

然而,它不工作,我不知道为什么

基于原始代码,但将整数而不是字符串放入HashMap值中,并在为该类型的纸张添加新顺序时增加键的当前值

int paperNo;
String paper;
HashMap papersOrdered;
...
papers.add(paper); //add a paper to the paper collection
papersOrdered.get(papers); //returns the papers
if(!(papersOrdered.containsKey(paper))) {
    paperNo = 1;
    papersOrdered.put(papers, new Integer(paperNo)); //put the rooNo and the paper collection into the HashMap
    System.out.println("'" + paper + "'" + " has been added to the paper order. " + paperNo + " copy ordered" ); //a message to say a paper has been added
} else{
    paperNo = papersOrdered.get(paper) + 1; //get the current value, and add 1 to it
    papersOrdered.put(papers, new Integer(paperNo)); //put the rooNo and the paper collection into the HashMap
    System.out.println("'" + paper + "'" + " has been added to the paper order." + paperNo + " copies ordered" ); //a message to say a paper has been added
}
System.out.println("======================================================="); ; //a line to seperate text 
System.out.println(" "); //a blank line

看看Google Guava的Multiset,它就是这样做的。

它以什么方式不起作用?你为什么要做paperNo=paperNo++;?您可以简单地执行paperNo++;变量将递增;永远不会对变量进行正确的增量吗?@JesseLukeOrange-您使用了后缀增量运算符。此运算符使变量递增,但返回其递增前的值。所以,具有讽刺意味的是,虽然一方面更新变量,但另一方面立即将其设置回原始值。阅读更多细节。@JesseLukeOrange关于paperNo=paperNo++的内容可能会引起您的兴趣。我第一次尝试了类似的代码,但遇到了一个.put错误,但平心而论,我认为这也行。找不到适合putjava.util.Array、java.lang.String的方法,int发现:必须使用整数而不是int。更新答案