Ввод файлов Java Mac - PullRequest
       0

Ввод файлов Java Mac

0 голосов
/ 11 марта 2011

Я пишу программу, которая входит в основной файл .txt и печатает определенные вещи.Это файл, разделенный запятыми.Файл содержит 7 имен и фамилий, а также 4 цифры после.Каждая из семи на отдельной строке.

Каждая строка выглядит следующим образом:

Джордж Вашингтон, 7, 15, 20, 14

программа должна захватить фамилию и затем усреднить 4 числа, но также усреднить первое из всех семи, второе из всех семи и т. д. Я не уверен, как начать приближаться к этому и заставить его продолжать захватывать и печатать то, чтонеобходимо.Спасибо за любую помощь.Я ценю его.Я использую Mac для выполнения всего этого программирования, и он должен работать в Windows, поэтому я использую:

File Grades = new File(System.getProperty("user.home"), "grades.txt"); 

, так как бы мне использовать это для чтения из файла?

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Java File класс на самом деле не обрабатывает открытие или чтение для вас.Возможно, вы захотите взглянуть на классы FileReader и BufferedReader .

0 голосов
/ 11 марта 2011

Не беспокойтесь о том, работает ли он на Mac или Windows. Java берет на себя все заботы о вас. :)

Вы могли бы сделать что-то вроде следующего. Это просто быстрое решение, так что, возможно, вы захотите внести некоторые изменения. Он читает из файла с именем «input.txt» прямо сейчас.

import java.io.*;

public class ParseLines {
  public static void main(String[] args) {
    try {
      FileInputStream fs = new FileInputStream("input.txt");
      BufferedReader reader =
        new BufferedReader(new InputStreamReader(new DataInputStream(fs)));

      String line;
      double collect[] = {0.0, 0.0, 0.0, 0.0};
      int lines = 0;
      while ((line = reader.readLine()) != null) {
        String[] parts = line.split(",");
        if (parts.length == 5) {
          int avg = 0;
          boolean skip = false;
          for (int i = 1; i < 5; i++) {
            String part = parts[i].trim();

            try {
              int num = Integer.valueOf(part);
              avg += num;
              collect[i - 1] += (double) num;
            }
            catch (NumberFormatException nexp) {
              System.err.println("Input '" + part +
                                 "' not a number on line: " + line);
              skip = true;
              break;
            }
          }

          if (skip) continue;

          avg /= 4;
          lines++;                    

          System.out.println("Last name: " + parts[0].split(" ")[1] +
                           ", Avg.: " + avg);
        }
        else {
          System.err.println("Ignored line: " + line);
        }
      }

      for (int i = 0; i < 4; i++) {
        collect[i] /= (double) lines;
        System.out.println("Average of column " + (i + 1) + ": " +
                           collect[i]);
      }

      reader.close();
    } catch (Exception e){
      System.err.println("Error: " + e.getMessage());
    }    
  }
}

Редактировать: Изменен код для усреднения первого, второго, третьего и четвертого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...