从文本文件读取到数组

时间:2014-03-25 23:26:38

标签: java arrays text io

您好我正在尝试做一个hackerearth挑战中位数的总和,它涉及我从文本文件中读取并将值存储在数组中。第一个值必须存储在我能够做的变量N中,但其余的值必须存储在一个数组中。这就是我陷入困境的地方。我必须逐行读取每个值,然后将其存储在数组中。 这是我的代码,我一直试图让它继续工作,但我不知道我哪里出错了。

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

class TestClass { 
 public static void main(String args[] ) throws Exception { 

 // read number of data from system standard input. 
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
 String line = br.readLine(); 
 int N = Integer.parseInt(line); 
 int i = 1;
 int[] myIntArray = new int[N];
  // median sum 
 long SumMedians = 0; 
 int median = 0;


 while (i<N)

     //read one line file and parse as an integer
     //store the value in an array
 { 

     myIntArray [i] = Integer.parseInt(line);

 i = i + 1; // increment i so i is the total numbers read
 }

所以我说我必须通过文本文件增加存储数组中行的每个值。任何帮助都会很棒,谢谢

文本文件将如下所示

5

10

5

1

2

15

每行一个字符串,我必须传入一个整数。 我将要做的是在我将行中的值存储到数组中后,我将对其进行排序并找到其介质,然后重复此过程,直到读取了文本文件中的所有值。

我想要做的问题是这个问题

http://www.hackerearth.com/problem/algorithm/sum-of-medians-1/

4 个答案:

答案 0 :(得分:1)

如果您正在阅读文本文件(而不是目前正在进行的标准输入),那么您需要以下内容:

// Warning: this could fail if the filename is invaild.
BufferedReader br = new BufferedReader(new FileReader("inputFileName.txt"));

然后读入每一行,您可以在while循环中使用以下内容:

// Warning: this will crash the program if the line contains anything other than integers.
myIntArray[i] = Integer.parseInt(br.readLine())
 i = i + 1; // increment i so i is the total numbers read

你也应该在最后关闭阅读器:

try{
  br.close();
} catch (IOException e)
{
  System.out.println("Error, program exit!");
  System.exit(1);
}

导入应与import java.io.InputStreamReader交换 致:import java.io.FileReader

答案 1 :(得分:0)

因为你只读了1行,所以我怀疑它是由冒号/分号或其他字符分隔的单行。试着查看StringTokenizer和Scanner类

答案 2 :(得分:0)

N =解析字符串到数字的数字 在程序的第一部分,它是N = 5

你为什么在使用while(i&lt; 5)?

如果你应该

r = number of lines in text file;

while (i< r)
{

readline;

parseline;

store in array;

}

然后排序

答案 3 :(得分:0)

调整他们给你的例子

import java.io.BufferedReader;
import java.io.InputStreamReader;

class TestClass {
    public static void main(String args[] ) throws Exception {
        /*
         * Read input from stdin and provide input before running
         */

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        int N = Integer.parseInt(line);

        //create storage array
        int[] myIntArray = new int[N];

        //read remainder of file
        for (int i = 0; i < N; i++) {
            String line = br.readLine();
            myIntArray[i] = Integer.parseInt(line);
        }
        // close file
        br.close();


        //Perform median calculations
        int median = 0;
        ...
        System.out.println(median);
}

}