我是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);
}
因此,如果你们都能提出一种方法来获得总和,我将不胜感激。谢谢!
答案 0 :(得分:2)
您正在循环中初始化sum
,导致sum
的值为typeOfRide.get(typeNumber)
。将行int sum = 0;
移到for
循环上方。
答案 1 :(得分:1)
typeOfRide
是一个Map,它不实现iterable,这应该会给你一个编译错误。
对于循环,您可能希望使用typeOfRide.entrySet()
,typeOfRide.keySet()
或typeOfRide.values()
除了vinodadhikary关于将int sum = 0;
移动到for循环之上的答案之外,循环使用它应解决它。