从文件中读取内容并将值存储到数组中

时间:2014-11-25 01:13:25

标签: java arrays import java.util.scanner

我有一个文件,比方说data.txt包含以下格式的数据

1 12
2 84
3 82
9 82
3 1
3 2

第一个数字表示应该添加第二个数字的数组索引。我无法解决这个问题...我想创建一个解析.txt文件的方法,并将值添加到适当的索引然后返回所有数字相加的数组。

2 个答案:

答案 0 :(得分:0)

试试这个。

代码

Scanner sc = new Scanner(new File("data.txt"));
int[] arr = new int[10];
while(sc.hasNextLine()) {

    String line[] = sc.nextLine().split("\\s");
    int ele = Integer.parseInt(line[1]);
    int index = Integer.parseInt(line[0]);
    arr[index] = ele;

}
int sum = 0;
for(int i = 0; i<arr.length; i++) {
    sum += arr[i];
    System.out.print(arr[i] + "\t");
}
System.out.println("\nSum : " + sum);
return sum;

输出

0   12  84  2   0   0   0   0   0   82
Sum : 180

此处sc.nextLine().split("\\s");读取每一行,并按空格将该行放入数组line[]line[0]将包含索引,line[1]将包含元素。它将以String的形式出现。它可以通过int转换为Integer.parseInt()ele存储元素,index存储转换为int后该元素的索引。

文件中未指定某些索引,因此其值为0

代码中的某些索引已重复,因此值将被覆盖。

答案 1 :(得分:0)

我把文本文件作为 1 12 2 84 3 86 4 17 5 18 9 10

包含12个数字。

请不要重复索引

public class FileArray {

public static void main(String[] args) throws FileNotFoundException {
    FileReader file=new FileReader("data.txt");
    int[] array=new int[12]; //i took size of array as total numbers in text file,
    int i=0;
    try{
    Scanner sc=new Scanner(file);
    while(sc.hasNext()){
        array[i]=sc.nextInt();
        i++;
    }
    sc.close();
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
    System.out.println(Arrays.toString(array));
    int size=(array.length)/2;
    int[] index=new int[size];
    int j=0;
    for(int k=0;k<array.length;k++)
    {
        if(k%2==0)
        {
        index[j]=array[k];
        j++;
        }
    }
    System.out.println(Arrays.toString(index));
    int[] res=new int[10];
    int m=1;
    for(int l=0;l<index.length;l++)
    {
        res[index[l]]=array[m];
        m+=2;
    }
    System.out.println(Arrays.toString(res));
    }
    }

输出:  [1,2,12,84,3,86,4,17,5,18,9,10]

[1,2,3,4,5,9]

[0,12,84,86,17,18,0,0,0,10]