在Java中将每四个字符串元素读入整数类型的ArrayList

在Java中将每四个字符串元素读入整数类型的ArrayList,java,arraylist,Java,Arraylist,我希望将以下字符串的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

我希望将以下字符串的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);
预期产出:

[31000, 12180.06, 13240.45, 36000, 19800.56... ]
将数据存储到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
...
使用此代码:

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);
public void readFile()
{
字符串内容=null;
尝试
{
contents=新字符串(Files.readAllBytes(path.get(“Program10.txt”));
} 
捕获(IOE异常)
{
e、 printStackTrace();
}
List surveyData=新的ArrayList(Arrays.asList(contents.split(\\s+)));
double[]收入=新的double[surveyData.size()];
双和=0;
对于(int i=0;i

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

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(int i=0;i
请记住,for-each循环在Java中也确实存在,当然有不同的语法。 以下是一些有关Java的有用链接,用于循环、数组和数组列表:


一如既往,您可以参考官方Java文档。

可能重复(根据您对Python的经验,您可能熟悉streams/functional style…在Java中,很容易将列表转换为流):谢谢@Sankeetth!由于i+=4,我尝试读取每四个元素,但看起来每个元素都在添加。知道为什么会这样吗?嗯,这很奇怪,因为只要你打电话。获取(i)每次将i增加4,它应该会起作用。用当前代码更新您的问题,这样我就可以看到它可能出错的地方。非常奇怪,***更新是否有任何洞察?@SankeethI我看到您将收入更改为数组。请记住,这意味着除每四分之一之外的所有元素都将保持默认值0。这个程序在我这方面似乎很有效,但当我修改它以使用Scanner进行输入时(因为我无法访问您的文件),您对它有什么问题?
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);