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}
答案 0 :(得分:3)
这是问题所在:
addition(tokens, value);
您正在调用该方法,但忽略了返回值。当您调用非void方法但忽略返回值时,应始终保持警惕。我怀疑你想要:
value = addition(tokens, value);
(我做了各种其他风格改变 - 可能从更改addition
中的循环开始使用增强型for
循环:for (String item : a)
等等。但这至少应该让你开始...)