0

我正在尝试组织从文本文件中获得的数据,每行有 4 条信息(城市、国家、人口和日期)。我想为每个数组创建一个数组,所以我首先将它们全部放入一个大字符串数组中,然后开始将它们分成 4 个数组,但我需要将 Population 信息更改为一个 int 数组,但它显示 *

“类型不匹配:无法从元素类型 int 转换为 String”

//Separate the information by commas
    while(sc.hasNextLine()){
        String line = sc.nextLine();
        input = line.split(",");
            //Organize the data into 4 seperate arrays
            for(int x=0; x<input.length;x++){

                if(x%4==0){
                    cities[x] = input[x];
                }
                if(x%4==1){
                    countries[x] = input[x];    
                }
                if(x%4==2){
                    population[x] = Integer.parseInt(input[x]); 
                }
                if(x%4==3){
                    dates[x] = input[x];
                }

            }
    }

当我打印出数组时,它们在每个数据之间都有一堆空值。我计划创建具有 4 条数据的对象,以便我可以按人口、日期等对它们进行排序......我对使用对象非常陌生,所以如果有人有更好的方法来获得 4 条数据将数据放入对象中,因为我还没有想出办法:/我的最终目标是拥有这些对象的数组,我可以对它们使用不同的排序方法

4

2 回答 2

1

我建议做这样的事情:

public class MyData {
    private String city;
    private String country;
    private Integer population;
    private String date;

    public MyData(String city, String, country, Integer population, String date) {
        this.city = city;
        this.country = country;
        this.population = population;
        this.date = date;
    }

    // Add getters and setters here
}

然后在您发布的文件中:

...

ArrayList<MyData> allData = new ArrayList<MyData>();

while(sc.hasNextLine()) {
    String[] values = sc.nextLine().split(",");
    allData.add(new MyData(values[0], values[1], Integer.parseInt(values[2]), values[3]));
}

...

您需要一个对象来存储数据,以便保持每列中的值之间的关系。

另外,我只是假设您在这里使用 Java。我们正在谈论的语言是您应该包含在您的问题中或作为标签的内容。

于 2012-11-24T18:44:13.250 回答
0

问题出在您的 x 索引上。如果您仔细查看“for”,您会发现它将在每 3 个位置插入一个值。

尝试

int index = 0;
 while(sc.hasNextLine()){
        String line = sc.nextLine();
        input = line.split(",");
            //Organize the data into 4 seperate arrays
            for(int x=0; x<input.length;x++){

                if(x%4==0){
                    cities[index] = input[x];
                }
                if(x%4==1){
                    countries[index] = input[x];    
                }
                if(x%4==2){
                    population[index] = Integer.parseInt(input[x]); 
                }
                if(x%4==3){
                    dates[index] = input[x];
                }

            }
          ++index;
    }
于 2012-11-24T18:24:56.980 回答