1

我是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 循环用于数组而不是映射。

 //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);
    }

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

4

2 回答 2

2

您正在循环内部进行初始化,导致sum值为。将线移到循环 上方。sumtypeOfRide.get(typeNumber)int sum = 0;for

于 2013-08-01T21:07:15.883 回答
1

typeOfRide是一个 Map,它没有实现可迭代,这应该会给你上面的编译错误。

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

除了 vinodadhikary 关于将int sum = 0;to 移到 for 循环上方的回答之外,循环这个应该可以解决它。

于 2013-08-01T21:12:06.527 回答