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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> bufferedreader inputstreamreader 
:(
    Опции темы
Shaci
Дата 13.10.2010, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что-то  не могу понять, для чего нужен BufferedReader, т.е. какие у обеъкта этого класса преимущества перед InputStreamReader

У шилдта есть пример программы чтения символов с консоли, там такой метод
Код

public class Main {
    /**
     * @param args the command line arguments
     */
public static void main(String [] args) throws IOException {
        char c;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        do {
            c = (char) br.read();
            System.out.println(c);
        } while (c != 'q');
    }
}


Но это можно реализовать и без использования BufferedReader
Код

public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String [] args) throws IOException {
        char c;
        InputStreamReader br = (new InputStreamReader(System.in));
        do {
            c = (char) br.read();
            System.out.println(c);
        } while (c != 'q');
    }
}


PM MAIL   Вверх
Vladus
Дата 13.10.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



как видно из названия, BufferedReader , сначала "буферезирует" данные =>  InputStreamReader быстрее, однако BufferedReader предоставляет некоторые удобные методы, например readLine.
PM MAIL   Вверх
Shaci
Дата 13.10.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Vladus @ 13.10.2010,  12:22)
как видно из названия, BufferedReader , сначала "буферезирует" данные =>  InputStreamReader быстрее, однако BufferedReader предоставляет некоторые удобные методы, например readLine.

благодарю, я как раз про readLine и думал

PM MAIL   Вверх
Shaci
Дата 13.10.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Появилось несколько вопросов:
Продолжу в эту ветку кидать

Нашел пособие с упражнениями на программирование java:
http://media.ssu.samara.ru/lectures/info/k...ov/lab_work.pdf
Там в первой задаче надо реализовать приложение, для введенной последовательности чисел выполняющее сумму, разность, и.т.д. и.т.п.
последовательность надо хранить в массиве.

Сделал вот так:
возникает вопрос метод read возвращает код введенного символа, т.е. при набирании 1 вернется числом . например, 49 (вроде, или 50, не суть), мне же нужно, чтобы вернулось число, соответствующее символу

Integer.parseInt((char)inp.read() + "")
пока что делаю таким, корявым способом, возможно можно сделать как-то лучше(уверен, что можно)?


Код

package praktikum1;

import java.io.*;

/**
 *
 * @author shaci
 * Задания из практикума.
 * № 1.
 */
public class Main {
    public static void main(String [] args) throws IOException {
        InputStreamReader inp = new InputStreamReader(System.in);
        System.out.println("Please, enter length of array");
        int count = Integer.parseInt((char)inp.read() + "");
        inp.skip(1);
        
        int [] array = new int [count];
        
        System.out.println("Please, full array....");
        for (int i = 0; i < count;) 
        {
            int code = inp.read();
            if (code == 10)
                ;
            else {
            array[i] = Integer.parseInt((char)code + "");
            i++;
            }
        }
        System.out.println("Result is: ");
        for (int el : array) {
            System.out.println(el);
        }
        System.out.println("Sum of elements: " + getSumNumbers(array));

    }

    public static int getSumNumbers (int [] array) {
        int sum = 0;
        for (int part : array) sum += part;
        return sum;
    }
}

PM MAIL   Вверх
Vladus
Дата 13.10.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



Цитата

возможно можно сделать как-то лучше(уверен, что можно)?

Можно использовать, например, DataInputStream, у него есть методы для чтения интов, булеанов, лонгов (readInt()...) и тд. И вообще все это гугл знает.
PM MAIL   Вверх
Skipy
Дата 13.10.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 6
Всего: 16



Integer.parseInt(String)


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Shaci
Дата 13.10.2010, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, google знает, главное правильно спрашивать
я уже код переколошматил чуть чуть.

Код

package praktikum1;

import java.io.*;

/**
 *
 * @author shaci
 * Задания из практикума.
 * № 1.
 */
public class Main {
    public static void main(String [] args) throws IOException {
        InputStreamReader inp = new InputStreamReader(System.in);
        
        System.out.println("Please, enter length of array");

        int count = Integer.parseInt((char)inp.read() + "");
        inp.skip(1);

        double [] arrayDouble = new double [count];
        int [] array = new int [count];
        
        System.out.println("Please, full (int) array....");
        for (int i = 0; i < count;) 
        {
            int code = inp.read();
            if (code == 10)
                ;
            else if (isInteger(code)){
            array[i] = Integer.parseInt((char)code + "");
            i++;
            }
            else {
                System.out.println("Error in symbol!!!");
                System.exit(0);
            }
        }

        System.out.println("Result is: ");
        for (int el : array) {
            System.out.println(el);
        }
        System.out.println("Sum of elements: " + getSumNumbers(array));

       BufferedReader inpBuffer = new BufferedReader(inp);

        System.out.println("Please, full (double) array....");
        for (int i = 0; i < count;)
        {
            String code = inpBuffer.readLine();
            if (code.isEmpty()) ;
            else if (isDouble(code)){
            arrayDouble[i] = Double.parseDouble((code));
            i++;
            }
            else {
                System.out.println("Error in symbol!!!");
                System.exit(0);
            }
        }

        System.out.println("Result is: ");
        for (double el : arrayDouble) {
            System.out.println(el);
        }
        System.out.println("Sum of elements: " + getSumNumbers(arrayDouble));
    }

    public static int getSumNumbers (int [] array) {
        int sum = 0;
        for (int part : array) sum += part;
        return sum;
    }

    public static double getSumNumbers (double [] array) {
        double sum = 0;
        for (double part : array) sum += part;
        return sum;
    }

    public static boolean isInteger(int code) {
        try {
            Integer.parseInt((char)code + "");
            return true;
        }
        catch(Exception e) {
            System.out.println(e);
            return false;
        }
    }

    public static boolean isDouble(String code) {
        try {
            Double.parseDouble(code);
            return true;
        }
        catch(Exception e) {
            System.out.println(e);
            return false;
        }
    }
}


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

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

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


 




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


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

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