您好我正在尝试做一个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/
答案 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);
}
}