首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中读取行,并操作每行中的单个单词?

从文件中读取行,并操作每行中的单个单词?
EN

Stack Overflow用户
提问于 2010-09-04 03:25:33
回答 4查看 2.3K关注 0票数 1

我正在尝试读入一个.txt文件,并创建一个映射来计算每个代理id以美元和美分列出的总资产。座席ids是每行末尾的三位数字。问题是,我不是很确定该怎么做。

我想我应该创建一个while循环,并将每一行添加到一个数组列表中,然后.....我迷路了。

110001 commercial 500000.00 101

110223 residential 100000.00 101

110333 land 30000.00 105

110442 farm 200000.00 106

110421 land 40000.00 107

112352 residential 250000.00 110

好吧,我知道自从我开始这个帖子已经有很长时间了,但是我已经好几个星期都不能重提这个问题了。(我试图学习这个是为了个人成长,所以它不是优先事项)到目前为止,我已经走了这么远……

我创建地图的方法是这样的:

代码语言:javascript
复制
public void createMap()
{
    if(in != null)
    {
        while(in.hasNextLine())
        {
            String s = in.nextLine().trim();
            System.out.print(s);


            String[] p = s.split(" ");

            String agentId = p[3];

            double property = Double.valueOf(p[2]);

            if(!map.containsKey(agentId)){
                //if not then add the new key with new value
                map.put(agentId, property);
                in.nextLine();
            }
            else
            {  //if key is present, add the value..
                map.put(agentId, map.get(agentId) + property);
                in.nextLine();
            }


        }
    }
}

然后在我正在运行的程序中:我将map转换为一个Set,并使用增强的for循环打印每个键和值。

代码语言:javascript
复制
Set<String> keySet = examp.map.keySet();
    for (String key : keySet)
    {
        double value = examp.map.get(key);
        System.out.println(key + "->" + value);
    }

然而,我的输出结果是:{}“空括号”!我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-04 03:41:40

如果你在数组列表中有它,你可以这样做:

代码语言:javascript
复制
HashMap<String, Integer> result = new HashMap<String, Integer>(); //<agent id, amount>
for(String line: arraylist)
{
    String[] items = line.split(" ");
    String agent = items[3];
    double amount = Double.valueOf(items[2]);

    if(!result.containsKey(agent)
        result.put(agent, amount);
    else
        result.put(agent, result.get(agent) + amount);
}

您可以遍历散列映射的键以获得结果。

票数 1
EN

Stack Overflow用户

发布于 2010-09-04 03:41:34

从文件中读入数据后,这些选项可能是解析字符串的最简单方法。

这是Java内置的解析字符串的方法。http://download-llnw.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)

这是一种在Java中解析字符串的旧方法,但仍然有效。http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html

使用StringTokenizer的实现示例。http://www.mkyong.com/java/java-stringtokenizer-example/

就像其他评论员所说的那样,试着去尝试。如果你是初学者,最好的学习方法就是亲手动手。当然,你会犯错误并丢弃代码,但你会在这个过程中学到很多东西。

票数 2
EN

Stack Overflow用户

发布于 2010-09-04 04:18:22

  1. 打开文件:

String pFile = "input.txt";BufferedReader in;try { in =BufferedReader FileReader(PFile);} catch (FileNotFoundException ex) {System.out.println(“找不到文件”);return;}

  • 声明HashMap:

HashMap映射=新的HashMap();//<代理id,amount>

  • 读取行,解析它们并添加到散列映射:

字符串行;//循环到文件末尾,同时((line= in.readLine()) != null) {//删除前后的空格...String[] = line.trim();//如果(line.isEmpty())继续,则忽略行为空;//将行拆分为数组String[] p=line.split(“");//现在根据输入文件的第一行//p="110001”//p1=“商业”//p2="500000.00“//p3="101”//做任何你想做的事情。String agentId = p3;//将字符串解析为double。double property = Double.valueOf(p2);//检查哈希是否已经包含key如果(!map.containsKey(AgentId))//如果不存在,则使用新值map.put(agentId,property)添加新密钥;否则//如果密钥存在,则添加值..map.put(agentId,map.get(agentId) + property);}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3638919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档