Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение double из txt 
V
    Опции темы
devmstr
Дата 14.2.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Тут подкинули задачку получить первое и последнее вещественное число из текстового файла. Файл содержит только числа и пробелы.
Так как файл текстовый то 
Код

DataInputStream 
как я понимаю не покатит. 
А парсить мне что-то не совсем понравилось, слишком уж громоздко(во всяком случае у меня smile). Что посоветуете. Скорее всего у Java как раз есть что-то "вкусное", просто я о нем не знаю.

Мой вариант:


        
Код

private double dFrst;    // First element in the file
    private double dLst;    // Last element in the file
    
    private String szSrc;    // Path to source file
    private String szRez;   // Path to Rezult file 
    
        private double getNextVal(BufferedReader in) throws Exception
        {
            double      dTmp = 0;
            char    crCh = ' ';       // Current char
            boolean     bMant = false;    // Is we adding  the mantissa
            double      dCof = 0.1;
            while (in.ready())
            {
        crCh  = (char)in.read();
        if (crCh != ' ')
            break;
            }
            if (!in.ready())
                return Double.NaN;
            while (in.ready() && (crCh != ' '))
            {
                if (crCh == '.' || crCh == ',')
                {
                    bMant = true;
                    crCh  = (char)in.read();
                    continue;
                }
                if (!bMant)
                    dTmp = dTmp * 10 + (crCh - '0'); 
                else
                {
                    dTmp = dTmp + (crCh - '0') * dCof;
                    dCof /= 10;
                }
             crCh  = (char)in.read();
            }
            if (crCh != ' ')
            {
                if (!bMant)
                    dTmp = dTmp * 10 + (crCh - '0'); 
                else
                    dTmp = dTmp + (crCh - '0') * dCof;
            }
            return dTmp;
        }
        
    private void ReadData()
    {
        try
        {
        
            BufferedReader in = new BufferedReader(new FileReader("c:\\Development\\Projects\\Education\\Java\\Kvazar\\Simple\\7\\in.dat"));
            dFrst = dLst = getNextVal(in);
                        double dTmp;
                        while (in.ready())
                        {
                            dTmp = getNextVal(in);
                            if (!Double.isNaN(dTmp))
                                dLst = dTmp;
                        }
             in.close();
        }
        catch (FileNotFoundException fne)
        {
            System.err.println("Sorry, but \"in.dat\" file not found.");
        }
        
        catch (IOException ioe)
        {
            System.err.println("Sorry, but Input/Output Exception was appead during program working");
        }
                catch (Exception e)
                {
                    System.err.println(e.getMessage());
                }
    }


Это сообщение отредактировал(а) devmstr - 14.2.2007, 00:12


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
w1nd
Дата 14.2.2007, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54





--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
devmstr
Дата 14.2.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



w1nd, 
Самое то!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.