2016-02-22 31 views
0

程序1:你是一名跑步者,并且你正在接受一场比赛的训练。你想跟踪你所有的训练时间。你只喜欢在湖边奔跑。下面是一些示例数据,HashMap帮助需要

Calhoun, 45.15 
Calhoun, 43.32 
Harriet, 49.34 
Harriet, 44.43 
Harriet, 46.22 
Como, 32.11 
Como, 28.14 

请写一个程序,使您能够进入湖泊和时间的名称,并将其存储所有这些数据在数据结构(S)的。不要将其存储在单个变量中。如果你开始在另一个湖边跑步(例如Cedar或Phalen),你的程序仍然可以工作。

你的程序应该能够分析你存储的数据,并打印出你跑过的每个湖的最快时间。所以,对于这个数据,你的程序将显示

Calhoun, 43.32 
Harriet, 44.43 
Como, 32.11 

你的程序应该使用输入验证。

你应该使用方法来组织你的程序。

这就是我正在试图通过使用HashMap但它似乎不工作。

import java.util.*; 

public class Main { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     //Creating a HaspMap as String for Key and Double for value 
     HashMap<String, Double> map = new HashMap<String, Double>(); 
     String lakeName;//Variable to store lake name 
     double time;//Variable to store time 




     while (true){ 
      System.out.println("What is the lake name: "); 
      lakeName = input.next(); 
      System.out.println("How many minutes did you run: "); 
      time = input.nextDouble(); 
      map.put(lakeName, time);//Addding Lake Name to and time to theHaspMap 


      if (lakeName.equalsIgnoreCase("A") || time ==1)//A condition to exit the loop 
       { 
       break; 


      } 

     } 
     System.out.println(); 
    } 
} 
+1

**国防部注:**让我们保持民意和建设性的意见 - 谢谢。 –

+0

谢谢@JonClements –

回答

1

使用HashMap<String, Double>允许您存储只是一个结果为每个湖泊。如果将其更改为HashMap<String, List<Double>>,则可以为每个湖存储多个结果,并找到给定湖的最快结果。

而不是

map.put(lakeName, time); 

你会碰到这样的:

List<Double> times = map.get(lakeName); 
if (times == null) { 
    times = new ArrayList<Double>(); 
    map.put(lakeName,times); 
} 
times.add(time); 
1

你不能使用你需要使用一个Map<String, List<Double>>到任何时候都存储在每个湖的Map<String, Double>

存储时,必须检索湖时间:

List<Double> times = map.get("Harriet"); 

,并获得名单的较低值。

Double bestTime = Double.MAX_VALUE; 
for (Double time : times) { 
    if (bestTime > time) bestITime = time;  
}