Использование сканера для чтения целых чисел из файла в массив - PullRequest
4 голосов
/ 06 сентября 2011

Я работаю над рецензионным заданием для школы.Назначение состоит в том, чтобы написать класс, который читает из стандартного ввода файл, содержащий несколько целых чисел, которые должны быть помещены в массив.Отсюда необходимо написать методы, которые находят среднее, медиану, максимум, мин и стандартное отклонение.

Это выглядит так:
45
56
67
78
89 и т.д.выберу то, что мне нужно.Однако я не понимаю, как правильно использовать FileReader и Scanner совместно.В настоящее время я использую BlueJ.Текстовый файл находится в папке проекта, но файл по коду не найден.

Вот что у меня есть.

import java.io.*;
import java.util.*;
import java.math.*;
public class DescriptiveStats
{
    public DescriptiveStats(){}
    public FileReader file = new FileReader("students.txt");

    public static void main(String[] args) throws IOException
    {
        try{
            List<Integer> scores = new ArrayList<Integer>();
            Scanner sc = new Scanner(file);
            while(sc.hasNext())
            {
                scores.add(sc.nextInt());
            }
            sc.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

Ответы [ 3 ]

2 голосов
/ 06 сентября 2011

Убедитесь, что "student.txt" находится в том же каталоге, что и код, который вы запускаете (например, где бы ни были скомпилированы ваши файлы .java), или укажите полный путь к файлу..ie ("C: / папка / students.txt ")

1 голос
/ 06 сентября 2011

System.out.println(new File("students.txt").getAbsolutePath()); даст вам путь, откуда Java пытается загрузить файл.

Я подозреваю, что это связано с неоднозначностью, вызванной несколькими путями в classpath, причем первая запись - та, откуда он загружается.Установка пути загрузки файла в качестве первой записи должна решить проблему.

0 голосов
/ 06 сентября 2011

Использовать Scanner.hasNextInt () (вместо Scanner.hasNext () ):

...
while(sc.hasNextInt())
{
    scores.add(sc.nextInt());
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...