【问题标题】:Reading from a text file into an array从文本文件读入数组
【发布时间】:2014-05-04 02:45:59
【问题描述】:

您好,我目前正在尝试进行中位数的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/

【问题讨论】:

  • 你知道该行的格式吗?每行有 1 个整数吗?每行有多个整数,用空格分隔?每行多个整数,用冒号 (:) 分隔?
  • 编辑这篇文章并向我们展示您的文本文件的外观。

标签: java arrays text io


【解决方案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

【讨论】:

    【解决方案2】:

    由于您只阅读 1 行,因此我怀疑它是由冒号/分号或其他字符分隔的单行.. 尝试查看 StringTokenizer 和 Scanner 类

    【讨论】:

      【解决方案3】:

      N = 将字符串解析为数字的数字 在你的程序的第一部分它 N = 5

      你为什么使用 while(i

      如果有的话,你应该是

      r = number of lines in text file;
      
      while (i< r)
      {
      
      readline;
      
      parseline;
      
      store in array;
      
      }
      

      然后排序

      【讨论】:

      • 我使用 N = 5(或文本文件的第一个值),因为在问题的规范中它说文本文件中的第一个值是需要从文件。所以我用它来遍历文件并将值存储在数组中。
      【解决方案4】:

      改编他们给你的例子

      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);
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-10
        • 2017-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多