在map java中查找值的总和

时间:2013-08-01 21:05:04

标签: java map sum

我是Java的初学者,所以我正在通过实验学习。我想创建一个类,它可以将一种类型的骑行作为一个字符串和一些骑手作为整数。我决定使用Map,因为它可以让我与其相关的个人保持一个骑行类型。

//How many attendants in total
System.out.println("How many attendents today?: ");
int numberOfAttendents = Integer.parseInt(bf.readLine());
System.out.println("Total number of attendents: " + numberOfAttendents);

Map<String, Integer> typeOfRide = new HashMap<String, Integer>();
boolean run = true;
final String counterEnd = "stop";
while(run)
{
   System.out.println("What type of ride?: ");
   String nameOfType = bf.readLine();
   if(nameOfType.equalsIgnoreCase(counterEnd))
   {
      run = false;
   }
   else
   {
     System.out.println("Number of riders?: ");
     Integer numberPerType =    Integer.parseInt(bf.readLine());                
     typeOfRide.put(nameOfType, numberPerType);
    }   
 }

所以上面的部分编译没有问题。然而,当我尝试添加每种骑行类型的骑手数量时,我遇到了一些困难,试图想出办法。我理解我使用的增强for循环是用于数组而不是用于map。

 //Adding individual entries of same ride
   for(Integer i: typeOfRide)
   {
      int sum = 0;
      System.out.println("Which ride type?: ");
      String typeNumber = bf.readLine();
      sum = sum + typeOfRide.get(typeNumber);
      System.out.println("Total number of riders per" + typeNumber + ":" + sum);
    }

因此,如果你们都能提出一种方法来获得总和,我将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

您正在循环中初始化sum,导致sum的值为typeOfRide.get(typeNumber)。将行int sum = 0;移到for循环上方。

答案 1 :(得分:1)

typeOfRide是一个Map,它不实现iterable,这应该会给你一个编译错误。

对于循环,您可能希望使用typeOfRide.entrySet()typeOfRide.keySet()typeOfRide.values()

除了v​​inodadhikary关于将int sum = 0;移动到for循环之上的答案之外,循环使用它应解决它。