我的方法有什么问题?添加不起作用,始终打印0

时间:2013-10-26 18:31:44

标签: java hashmap

public static void main(String args[])
{
    LinkedHashMap<String,Integer> map = new LinkedHashMap<String,Integer>();
    Scanner scan = new Scanner(System.in);

    while(scan.hasNextLine())
    {
        String line = scan.nextLine();
        String[] tokens = line.split(" ");

        if(!Character.isDigit(tokens[0].charAt(0)) && !line.equals("clear") && !line.equals("var"))
        {
            int value = 0;
            for(int i=0; i<tokens.length; i++)
            {
                if(tokens[i].charAt(0) == '+')
                {
                    addition(tokens, value);
                    break;
                }

                else if(i==tokens.length-1)
                {
                    System.out.println("No operation");
                    break;
                }
            }
            map.put(tokens[0], value);
            System.out.println(map);
        }       

        if(line.equals("clear"))
        {
            clear(map);
        }
        if(line.equals("var"))
        {
            variableList(map);
        }       
    }
}

public static int addition(String[] a, int b)
{
    for(int j=0; j<a.length; j++)
    {
        if(Character.isDigit(a[j].charAt(0)))
        {
            int add = Integer.parseInt(a[j]);
            b = b + add;
        }   
    }
    return b;
}

我在主要方法中使用了所有这些,但我想将它分开以使其更清洁。我一定做错了,因为现在添加方法甚至没有正常运行。例如,a = 5 + 6应打印地图{a = 11}

1 个答案:

答案 0 :(得分:3)

这是问题所在:

addition(tokens, value);

您正在调用该方法,但忽略了返回值。当您调用非void方法但忽略返回值时,应始终保持警惕。我怀疑你想要:

value = addition(tokens, value);

(我做了各种其他风格改变 - 可能从更改addition中的循环开始使用增强型for循环:for (String item : a)等等。但这至少应该让你开始...)