Я пытаюсь сделать простую программу, чтобы найти среднее число серий в текстовом документе, у меня большая часть его, но у меня возникла проблема с записью одной переменной в моей в то время как заявление. Мой код выглядит так.Java Среднее из файла
public static void processFile (String filename) throws IOException, FileNotFoundException {
try (BufferedReader inputReader = new BufferedReader (new InputStreamReader(new FileInputStream("scores.txt")))) {
String line;
int lineNum = countLines("scores.txt");
int [] allNums = new int [lineNum];
while ((line = inputReader.readLine()) != null) {
int i = 0;
allNums[i] = Integer.parseInt(line);
average(allNums);
System.out.println(allNums[i]);
}
System.out.println(average(allNums));
}
}
public static double average(int[] avg){
double sum = 0;
for (int i = 0; i < avg.length; i++) {
sum = sum + avg[i];
}
return sum/avg.length;
}
`public static int countLines(String filename) throws IOException {
int cnt;
try (LineNumberReader reader = new LineNumberReader(new
FileReader(filename))) {
cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
}
return cnt;
}`
Вместо того чтобы найти среднее значение чисел в файле, он берет последний номер записывается в массив и делит его на количество чисел в файле. Я искал свою проблему, но не могу найти решение, которое сработало. Кроме того, я знаю, что я стал немного запутанным и неэффективным с моим кодированием, особенно с поиском количества строк, но это небольшой файл, и я бы хотел, чтобы он работал, прежде чем я сделаю его более эффективным.
Вы не увеличиваете 'i' в своем цикле' while'. – Atri
Атри справа. Переместите 'int i = 0;' вверх, вне цикла while и поместите 'i ++;' в конец цикла. В противном случае вы просто пишете первый элемент массива снова и снова. –