首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中每隔一次将字符串元素读入整数类型的ArrayList

问在Java中每隔一次将字符串元素读入整数类型的ArrayList
EN

Stack Overflow用户
提问于 2020-11-24 08:23:18
回答 1查看 105关注 0票数 0

我希望将以下字符串的ArrayList读入Int类型的ArrayList:

代码语言:javascript
复制
[1000, 31000, 3, Texas, 1042, 12180.06, 3, Texas, 1062, 13240.45, 2, Texas, 1200, 36000, 2, Maryland, 1327, 19800.56, 2, Alaska, 1483, 22458.23, 7, Texas, 1900, 17000.09, 3, Washington, 2000, 16910.00, 2, Vermont, 2112, 23125, 4, Alaska, 2500, 20001, 5, Hawaii, 3000, 21330.00, 3, Texas, 3210, 13200, 1, Minnesota, 3600, 77500, 4, California, 3601, 11970, 2, Illinois, 4000, 25750.00, 4, Florida, 4724, 8900, 3, Oklahoma, 6217, 45000.70, 2, Texas, 9280, 6200, 1, Vermont, 5000, 30170.00, 2, Hawaii, 5100, 30170.05, 5, Arkansas, 5601, 51970, 9, Illinois, 5724, 66900, 3, Florida, 5217, 10002.68, 2, Texas, 5280, 70000, 1, Washington, 5000, 100000, 10, Hawaii, 5200, 25000.4, 3, Texas, 5230, 120000, 6, California, 6641, 85000, 7, Alaska, 7000, 45500, 4, Maryland, 7100, 56500, 3, Illinois, 7205, 50100.65, 8, Arkansas, 8110, 110005.9, 8, Texas, 8340, 70100.25, 9, Iowa, 9101, 67590.40, 6, Texas, 9220, 35000.58, 8, Arkansas, 9300, 22000.69, 4, Iowa, 9400, 19490.00, 1, Hawaii, 9400, 55490.00, 4, Pennsylvania]

有没有办法每隔四个元素读取一次,这样31000,12180.06,13240.45,36000,...等被读取到ArrayList收入中,转换为int数据类型?

我来自Python,是Java的新手,不知道如何正确地做这件事。下面的代码正在输出从1开始的每四个数字的列表...

代码语言:javascript
复制
List<String> surveyData = new ArrayList<String>(Arrays.asList(contents.split("\\s+")));
        
        ArrayList<Integer> income = new ArrayList<>();
        
        for (int i = 1; i < surveyData.size(); i+=4)
        {
            income.add(i);
        }
        System.out.println(income);

当前输出:

代码语言:javascript
复制
[1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45,...]

预期输出:

代码语言:javascript
复制
[31000, 12180.06, 13240.45, 36000, 19800.56... ]

将数据存储到ArrayList中非常重要!

*更新从文件读取数据,格式如下:

代码语言:javascript
复制
1000  31000  3 Texas
1042  12180.06  3 Texas
1062  13240.45  2 Texas
1200  36000  2 Maryland
1327  19800.56  2 Alaska
1483  22458.23  7 Texas
1900  17000.09  3 Washington
...

使用以下代码:

代码语言:javascript
复制
public void readFile()
    {
        String contents = null;
        try 
        {
            contents = new String(Files.readAllBytes(Paths.get("Program10.txt")));
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
        
        List<String> surveyData = new ArrayList<String>(Arrays.asList(contents.split("\\s+")));
        
        double[] income = new double[surveyData.size()];
        double sum = 0;
        
        for (int i = 0; i < surveyData.size(); i+=4)
        {
            income[i] = Double.parseDouble(surveyData.get(i));
            sum += income[i];
        }
// Calculate & Print the Average Income
        averageIncome = sum / (income.length / 4);
        // Outputting the total rainfall for the year
        System.out.printf("%nAverage Income is %.2f", averageIncome);

打印正确的平均值(我选中了),并将所有其他项解析为0.0。注意,我使用了income.length /4来跳过无关的元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-24 08:28:37

I表示一个整数,当您通过for循环时,它只是充当一个计数器。它不像python中的for-each循环那样表示列表的元素本身。但是,您可以将其用作索引,以访问列表/数组中的点上的元素。例如:

代码语言:javascript
复制
for (int i = 0; i < surveyData.size(); i+=4)
{
    income.add(Integer.parseInt(surveyData.get(i))); //parseInt converts string to int, get returns element at a specific position in the list
}
System.out.println(income);

请记住,在Java中也存在for-each循环,当然使用不同的语法。下面是关于Java for循环、数组和数组列表的一些有用的链接:https://www.w3schools.com/java/java_for_loop.asp https://www.w3schools.com/java/java_arrays.asp https://www.w3schools.com/java/java_arraylist.asp

和往常一样,您可以参考官方的Java文档。

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

https://stackoverflow.com/questions/64978544

复制
相关文章

相似问题

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