Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с выводом через System.out.print (JAVA)

15K
14 марта 2010 года
Ybr
31 / / 19.03.2007
Здравствуйте!
Задание: дан файл, содержащий Фамилию, Имя человека (инициалы) и список книг, закрепленных за этим человеком. Необходимо вывести содержимое файла на консоль (это часть моего задания. Та часть, которая вызвала проблему).

Код:
Код:
class DataBase {
    public void view_base() {/* выводит БД */
        BufferedReader in;// символьный поток для чтения
        String s;// буфер для чтения строк из файла
        String sub_s="";// подстрока строки s. Хранит  инициалы
        String result;// хранит только список книг
        int i=0;// счетчик

        try {
            in = new BufferedReader(new InputStreamReader
                    (new FileInputStream("C:\\...\\БД.txt")));

           [COLOR="Purple"] while (in.ready()) {
                s = in.readLine();

                System.out.print(s+"\n");

                /*for (i=0 ; i != s.indexOf("+") ; i++) {
                    System.out.print(s.charAt(i));
                    sub_s = sub_s+s.charAt(i);
                }
                result = s.substring(sub_s.length()-1);// удалили инициалы
                result = s.substring(2, s.length()-2);//удалили вспомогательные "++" вначале и вконце
                */

                System.out.print(s); sub_s = "";[/COLOR]
            }
            in.close();
        }
        catch (IOException err) {
            System.out.println("\nПроизошла ошибка: "+err+"\nСкорее всего, файла не существует!");
        }
    }
    public void find_base (String data) {/* производит поиск по БД */

    }
    public void edit_base (String name, String surname, String books[]) {/* Редактирует БД */

    }
}
class Main {
    public static void main(String[] args) {
        DataBase work_base = new DataBase();// работа с базой данных
       
        work_base.view_base();
    }
}

[SIZE="1"](проблемный код я выделили [COLOR="Purple"]цветом[/COLOR])[/SIZE]

Содержимое файла БД.txt:
 
Код:
Елена Черняева++Гомер. "Илиада" и "Одиссея":Энтони Троллоп. "Барсетширские хроники":Джейн Остин. "Гордость и предубеждение":Джонатан Свифт. "Приключения Гулливера"++
Олег Борнер++Шарлотта Бронте. "Джен Эйр":Лев Толстой. "Война и мир"++
Дим Эм++Чарльз Диккенс. "Дэвид Копперфильд":Уильям Тэккерей. "Ярмарка тщеславия":Гюстав Флобер. "Мадам Бовари":Джордж Элиот. "Миддлмарч"++

[SIZE="1"](На всякие вспомогательные символы не обращайте, пожалуйста, внимания)[/SIZE]

Вывод программы:
 
Код:
Елена Черняева++Гомер. "Илиада" и "Одиссея":Энтони Троллоп. "Барсетширские хроники":Джейн Остин. "Гордость и предубеждение":Джонатан Свифт. "Приключения Гулливера"++
Елена Черняева++Гомер. "Илиада" и "Одиссея":Энтони Троллоп. "Барсетширские хроники":Джейн Остин. "Гордость и предубеждение":Джонатан Свифт. "Приключения Гулливера"++Олег Борнер++Шарлотта Бронте. "Джен Эйр":Лев Толстой. "Война и мир"++
Олег Борнер++Шарлотта Бронте. "Джен Эйр":Лев Толстой. "Война и мир"++Дим Эм++Чарльз Диккенс. "Дэвид Копперфильд":Уильям Тэккерей. "Ярмарка тщеславия":Гюстав Флобер. "Мадам Бовари":Джордж Элиот. "Миддлмарч"++
Дим Эм++Чарльз Диккенс. "Дэвид Копперфильд":Уильям Тэккерей. "Ярмарка тщеславия":Гюстав Флобер. "Мадам Бовари":Джордж Элиот. "Миддлмарч"++


Я имею пока очень мало опыта в JAVA, поэтому в нижеследующих рассуждениях у меня нет полной уверенности.

В общем, в строке
 
Код:
System.out.print(s+"\n");

Выводится только что считанная из файла строка (назовем ее Строка1). Далее идет закоментенный блок. Я сделал это намеренно, для чистоты эксперимента. После закомменченного блока идет строчка:
 
Код:
System.out.print(s); sub_s = "";

То, что выводит эта строка, назовем Строка2. Скажите мне, пожалуйста, каким образом программе удается вывести что-то, отличное от Строки1?? Между Строка1 и Строка2 не происходит ровным счетом НИКАКИХ действий, однако переменной [FONT="Courier New"][SIZE="3"]s[/SIZE][/FONT] каким-то образом удается измениться. Она приписывает к себе из ниоткуда следующую строку из файла. Ту самую, которая еще не считана!!
Как это происходит? Где я ошибся? Буду рад любому ответу.:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог