|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.10.2016, 00:39 | #1 |
Пользователь
Регистрация: 27.10.2016
Сообщений: 26
|
Сканер читает только первую строку
Всем здравствуйте.
Только начал изучать Java. Написал код, который должен читать документ типа *.CSV При этом второй столбец (столбцы в файле разделены знаком ";") сохраняет в массив. Код:
Вот пример содержимого файла: Base;52;9;0.6;59;346;330;E34578208; N31704875;16;12.1;15.9;27.7;100;11; 4;Stab;0;61;46;0:6:53;123;49;79;0;0 ;1109;703;2016-07-26;06:34:12;0.6;99.0 Base;72;11;2.1;64;354;328;E34578183 ;N31705037;16;12.1;15.9;27.7;100;6; 6;Stab;0;60;46;0:6:54;123;50;79;0;0 ;1065;701;2016-07-26;06:34:12;0.6;99.0 Base;90;13;2.7;68;358;350;E34578175 ;N31705212;16;12.1;15.9;26.6;110;12 ;14;Stab;0;65;46;0:6:55;123;50;79;0 ;0;1057;704;2016-07-26;06:34:12;0.6;99.0 Base;109;16;2.9;74;10;346;E34578203 ;N31705393;16;12.1;15.9;26.9;120;12 ;14;Stab;0;66;46;0:6:56;123;49;79;0 ;0;1057;686;2016-07-26;06:34:12;0.6;99.0 Base;129;19;2.9;75;16;350;E34578258 ;N31705580;16;12.1;15.9;26.9;130;11 ;20;Stab;0;64;46;0:6:57;122;50;79;0 ;0;1112;742;2016-07-26;06:34:12;0.6;99.0 Прикол в том, что сканер filescan не видит вторую строку текста и на втором круге filescan.hasNext выдаёт false. Если принудительно прописать while (i<50), то после запуска программы выскакивает : Java.util.NoSuchElementException: No line found. Помогите разобраться пожалуйста. Последний раз редактировалось AlexOrlo; 27.10.2016 в 00:55. |
27.10.2016, 07:57 | #2 |
Форумчанин
Регистрация: 08.04.2012
Сообщений: 104
|
Код:
|
27.10.2016, 09:13 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Попробуйте hasNextLine вместо hasNext
Последний раз редактировалось phomm; 27.10.2016 в 09:27. |
27.10.2016, 11:56 | #4 |
Пользователь
Регистрация: 27.10.2016
Сообщений: 26
|
ultimatet спасибо за рабочий код, но мне всё же интересно, почему не работает у меня.
phomm Вместо hasNext я не то, что hasNextLine пробовал, принудительно while (i<50) подсовывал (в текстовом файле больше тысячи строк). После чего выходит ошибка, которую озвучил в первом посте и подсвечивается строка line = filescan.nextLine(); Почему то сканер не видит больше одной строки.. |
27.10.2016, 14:15 | #5 |
Форумчанин
Регистрация: 08.04.2012
Сообщений: 104
|
У вас ошибка в коде
Код:
|
27.10.2016, 16:11 | #6 |
Пользователь
Регистрация: 27.10.2016
Сообщений: 26
|
ultimatet41
Спасибо большое! Работает!)) |
31.10.2016, 02:45 | #7 |
Пользователь
Регистрация: 27.10.2016
Сообщений: 26
|
Не хочу плодить темы, поэтому продолжу спрашивать глупые вопросы здесь.
Задача получить окно с графиком собранным из значений массива. При этом иметь возможность изменять его масштаб. Мои действия: создал класс и метод к нему который записывает данные из файла в массив. Далее создал класс который рисует график и имеет алгоритм масштабирования. Далее создал панель на которую рисует предыдущий метод график. К этой же панели добавил текстовое поле, которое с помощью актион_листенер, читает содержимое и присваивает его к переменной масштабирования графика. Тем самым хотелось бы в этом поле вводить коэффициент и график бы на лету масштабировался. Но конфуз в том, что график не меняется до того, как изменить размер окна. То есть ввожу новое значение, ничего не происходит. Перевожу окно в полный режим и только после перерисовки окна график меняется. Подскажите пожалуйста, где я затупил. Могу выложить полный код если нужно, но вдруг и со слов понятно где я ошибся или недопонял.. |
31.10.2016, 03:42 | #8 |
Пользователь
Регистрация: 27.10.2016
Сообщений: 26
|
Таксс, побродил по интернету, почитал.. Добавил repaint(); в конце графического блока. Теперь перерисовывается автоматом, но постоянно грузит ЦП.
Я так понимаю нужно добавить ещё какой то листенер...? |
31.10.2016, 13:13 | #9 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
... // нарисовал repaint(); и попросил НАРИСОВАТЬ еще раз(вызвать все тот же графический блок как только это будет возможно). Repaint надо вызвать НЕ ИЗ графического блока, а ТАМ где настраиваются (изменяются) данные для отрисовки (параметры графика). Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
31.10.2016, 13:38 | #10 |
Пользователь
Регистрация: 27.10.2016
Сообщений: 26
|
Всё, разобрался)) repaint(); добавил в ActionListener тех самых текстовых полей, которые задают масштабирование. Теперь всё работает чётко и ничего не грузит))
Спасибо evg_m! |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
MS Access+ComboBox (читает только до знака -) | Denis3 | БД в Delphi | 1 | 15.08.2013 17:35 |
Цикл for. Пропустить первую строку | webber9989 | Общие вопросы Delphi | 13 | 03.12.2012 12:20 |
Как рапечатать только первую страницу документов? | Тандер | Microsoft Office Word | 1 | 25.06.2012 00:11 |
Прочитать первую строку из memo | hacknet | Работа с сетью в Delphi | 1 | 22.10.2010 18:56 |
Почему читает лишнюю строку | nusik | Общие вопросы C/C++ | 6 | 20.05.2009 18:22 |