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();
}
}
Проблема с выводом через System.out.print (JAVA)
Задание: дан файл, содержащий Фамилию, Имя человека (инициалы) и список книг, закрепленных за этим человеком. Необходимо вывести содержимое файла на консоль (это часть моего задания. Та часть, которая вызвала проблему).
Код:
Код:
[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] каким-то образом удается измениться. Она приписывает к себе из ниоткуда следующую строку из файла. Ту самую, которая еще не считана!!
Как это происходит? Где я ошибся? Буду рад любому ответу.:)