我希望将以下字符串的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]有没有办法每隔四个元素读取一次,这样31000,12180.06,13240.45,36000,...等被读取到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中非常重要!
*更新从文件读取数据,格式如下:
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来跳过无关的元素。
发布于 2020-11-24 08:28:37
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);请记住,在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文档。
https://stackoverflow.com/questions/64978544
复制相似问题