数据样本: 
人名/小时数 
【张三】【3】 
【李四】【2】 
【王五】【5】 
【张三】【1】 
 要求:将各人名下小时数相加,得出以下结果 
张三:4小时 
李四:2小时 
王五:5小时 
 请问: 
1. 请告知程序思路。 
2. 是否用数组? 
3. 最好能写一个简单范例,不要求机器上能通过,但要能看清楚思路。 

解决方案 »

  1.   

    可以定义一个二维数据组,第一维存放人名,第二给存放小时数,把原数据都放进去。
    然后一次次取出数据,放到hashtable中,
    如果已经没有,直接put进去,
    如果有了,把原hashtable中的值取出来,再加上现在的值得到的新值存进去。
    这样最后这个hashtable中存放的就是人名/小时数的键值对了!
    LZ可以试下
      

  2.   

    下面是这实现的代码,LZ参加下:/**
     * 
     */
    package net.csdn.blog.johnston;import java.util.Hashtable;/**
     * @author Administrator
     *
     */
    public class TestCount { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[][] nameAndTime = {{"张三","1"},{"李四","2"},{"王五","3"},{"张三","4"},{"王五","5"}};  //初始化数据
    Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
    for (int i=0; i<nameAndTime.length; i++) {
    for (int j=0; j<nameAndTime[i].length-1; j++) {
    String name = nameAndTime[i][j];
    int time = Integer.parseInt(nameAndTime[i][j+1].trim());
    //输出取出的数据
    System.out.println("name:" + name + "time: " + time);

    if (ht.containsKey(name)) { //如果ht已经有键了,则需要相加后重新设置它的键
    time = time + ht.get(name);
    ht.put(name, time);
    } else {
    ht.put(name, time);
    }
    }
    }

    System.out.println("处理后的结果:" + ht);
    }}运行结果:
    name:张三time: 1
    name:李四time: 2
    name:王五time: 3
    name:张三time: 4
    name:王五time: 5
    处理后的结果:{王五=8, 张三=5, 李四=2}