当前位置: 首页 > 知识库问答 >
问题:

将每四个String元素读入Java中整数类型的ArrayList

皇甫俊雅
2023-03-14

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

[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]

是否有一种方法可以读取每四个元素,以便310001280.0613240.4536000。。。等等,读入ArrayList收入,转换为int数据类型?

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

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);

当前输出:

[1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45,...]

预期产出:

[31000, 12180.06, 13240.45, 36000, 19800.56... ]

非常重要的是,数据被存储到一个ArrayList!

***UPDATE读取此格式文件中的数据:

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
...

使用此代码:

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跳过无关元素。

共有1个答案

弓玉书
2023-03-14

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

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);

请记住,for-each循环在Java中也确实存在,当然有不同的语法。以下是一些有关Java的有用链接,用于循环、数组和数组列表: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次以上的元素。所以我尝试如下修改,这导致了错误。 正确的方法是什么? 问题答案: 对于后一个问题,您必须进行更改 至 对于第一部分,尚不清楚为什么需要第一条管道,然后需要第二条管道。如果目的是将转换为,请使用: 正如Dici所建议的,您还可以将Collectors链接起来,将每个数字与

  • 本文向大家介绍将整个ASCII文件读入C ++ std :: string,包括了将整个ASCII文件读入C ++ std :: string的使用技巧和注意事项,需要的朋友参考一下 这是在C ++中将整个ASCII文件读入std::string的简单方法- 算法 示例 输入项 输出结果

  • 问题内容: 这是我要使用的。.length方法对我尝试的任何操作均无效,因此我什至不知道从哪里开始。 问题答案: 您正在尝试遍历单个数组而不是字符串数组。更改 至 以便通过字符串列表循环,收集每个字符串和存储它诠释的,你以后。

  • 问题内容: 我正在尝试使用文件“ Tall.txt”将其中包含的整数写入名为“ tall”的数组中。它在某种程度上做到了这一点,但是当我运行它时,它会引发以下异常(: 为什么要完全做到这一点,以及如何将其删除?如我所见,我将文件读取为字符串,然后将其转换为int,这是非法的。 问题答案: 您可能想做这样的事情(如果您使用的是Java 5及更高版本)

  • 问题内容: 考虑一个名为“ new.txt”的文本文件,其中包含以下元素: 在Python 2.7中,我可以通过键入以下内容来读取文件: 到现在为止还挺好。我可以通过以下方法轻松地将此列表转换为numpy数组: 问题是,我无法通过numpy的loadtxt函数直接读取此文件: 直接将此文件直接读入numpy的正确方法是什么? 谢谢。 问题答案: 在内存中,Unicode字符串表示为UCS-2或UC

  • 我正在为某个游戏开发某种“分数跟踪器”应用程序。用户添加一定数量的玩家(当前数量是无限的),然后这些玩家的名字被添加到ArrayList中。然后在下一个活动中,用户必须从一个旋转器中选择一个playername,并为该玩家输入一定数量的“点数”,或者说“分数”。 这是我当前的代码: 现在我要做的是实现一个功能,它将跟踪每个球员的得分。 示例:用户添加了2个玩家,一个叫约翰,一个叫杰克。然后用户给约