powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Из текста в число
30 сообщений из 30, показаны все 2 страниц
Из текста в число
    #39171616
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Я новичок в java. Есть текстовый файл в UTF-8. Прочитал из текстового файла число в переменную s типа String.
При конвертации int i = Integer.valueOf(s) - программа аварийно завершается. Не пойму в чем проблема.
...
Рейтинг: 0 / 0
Из текста в число
    #39171650
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhan,

Проблема в том что в переменной s не число.
Используй try...catch для перехвата исключений и Exception.printStackTrace() для вывода.
Используй пошаговую отладку и breakpoint-ы для того чтобы видеть значения переменных.
...
Рейтинг: 0 / 0
Из текста в число
    #39171695
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

число.
Я выводил содержимое в лог - Log.d("myLogs",s);
...
Рейтинг: 0 / 0
Из текста в число
    #39171700
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanчисло.
Я выводил содержимое в лог - Log.d("myLogs",s);
Умиляет меня привычка вопрошающих игнорировать большую часть моего комментария и начинать спорить о какой-то мелочи, с которой они способны поспорить. Вы сюда поспорить пришли? Или такие покажете stacktrace и сообщение об ошибке?
...
Рейтинг: 0 / 0
Из текста в число
    #39171709
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

вот что выводит отладка - внизу андроид студио закладка Debugger, Variables:
s={String@3833}"999"
count = 4
hashcode = 0
offset = 0
value = {char[36]3849}
....
...
Рейтинг: 0 / 0
Из текста в число
    #39171711
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
использовал пошаговую отладку, стоит на breakpoint-е.
переменная должна содержать число 999
...
Рейтинг: 0 / 0
Из текста в число
    #39171715
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanандроид студио
Начинают всплывать любопытные подробности.
Кстати, если посмотреть в JavaDoc , то можно узнать что valueOf возвращает тип Integer, а parseInt - int
Так что там с исключением?
...
Рейтинг: 0 / 0
Из текста в число
    #39171718
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanвот что выводит отладка - внизу андроид студио закладка Debugger, Variables:
s={String@3833}"999"
count = 4
hashcode = 0
offset = 0
value = {char[36]3849}
....
Любопытно, а почему count=4? s.length() что возвращает? В массиве value первые 3 элемента 9?
...
Рейтинг: 0 / 0
Из текста в число
    #39171777
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

parseInt тоже пробовал (
...
Рейтинг: 0 / 0
Из текста в число
    #39171778
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczakhanвот что выводит отладка - внизу андроид студио закладка Debugger, Variables:
s={String@3833}"999"
count = 4
hashcode = 0
offset = 0
value = {char[36]3849}
....
Любопытно, а почему count=4? s.length() что возвращает? В массиве value первые 3 элемента 9?

length=4
Хотя, должно быть 3 символа '9'
...
Рейтинг: 0 / 0
Из текста в число
    #39171781
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhan,

может один лишний символ вот этот - {String@3833}?
Что это?
...
Рейтинг: 0 / 0
Из текста в число
    #39171813
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanakhan,

может один лишний символ вот этот - {String@3833}?
Что это? это тип объекта и его ID к проблеме отношения не имеет. Посмотри value может там закрался управляющий символ. Хотя идейка его бы показала. И когда же вы наконец покажете сообщение об ошибке? Может оно вообще не об этом?
...
Рейтинг: 0 / 0
Из текста в число
    #39171918
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Blazkowicz]akhanakhan,


Посмотри value может там закрался управляющий символ.

Может этот value = {char[36]3849}?
...
Рейтинг: 0 / 0
Из текста в число
    #39171919
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczakhanakhan,

может один лишний символ вот этот - {String@3833}?
Что это? это тип объекта и его ID к проблеме отношения не имеет. Посмотри value может там закрался управляющий символ. Хотя идейка его бы показала. И когда же вы наконец покажете сообщение об ошибке? Может оно вообще не об этом?

никакое сообщение не выводится, просто при выполенении операции int i = Integer.valueOf(s) - программа аварийно завершается.
...
Рейтинг: 0 / 0
Из текста в число
    #39171948
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanBlazkowiczпропущено...
это тип объекта и его ID к проблеме отношения не имеет. Посмотри value может там закрался управляющий символ. Хотя идейка его бы показала. И когда же вы наконец покажете сообщение об ошибке? Может оно вообще не об этом?

никакое сообщение не выводится, просто при выполенении операции int i = Integer.valueOf(s) - программа аварийно завершается.
Как понять аварийно завершается? Аналогично System.exit(1)?

методы valueOf и parseInt выбрасывают исключения NumberFormatException, посмотрите блок catch.
п.с. ваша ошибка ниочем, вам выше уже расписали в чем у вас проблема, но вы продолжаете игнорить. Покажите блок проблемного кода.
...
Рейтинг: 0 / 0
Из текста в число
    #39171971
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanпрограмма аварийно завершается.
Так и написано на экране? "Программа завершена аварийно"?
...
Рейтинг: 0 / 0
Из текста в число
    #39171972
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно товарищ про StackTrace и Exception не в теме.
...
Рейтинг: 0 / 0
Из текста в число
    #39172064
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickОчевидно товарищ про StackTrace и Exception не в теме.

в теме ))
Только не думал, что для такого очевидного необходимо делать try exception. Я же виже в файле только цифры, я вижу цифры при выводе в лог, и наконец, я вижу цифры в окно variables при по шаговой отладке! Если не поленились и прочитали с начала, то видели бы что я писал. Да, видел названия екскепшна при отладке, но не запомнил. Можно еще раз повторить. Но, почему по имеющимися данными нельзя понять, в чем проблема? Что, студио в трассировке показывает одно, а в сообщении об ошибке другое?
...
Рейтинг: 0 / 0
Из текста в число
    #39172075
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanв теме ))

А так и не скажешь.
akhanТолько не думал, что для такого очевидного необходимо делать try exception.

Очевидно что если есть exception то он указывает на источник исключения. А вы вместо того чтобы смотреть в корень проблемы оглядываешься по сторонам то на данные, то на методы.

akhanЯ же виже в файле только цифры

Видишь перенос строки? Вот и я не вижу. А он есть. Видишь BOM? Видишь code point? Нет, не видишь. А они все могут повлиять на твои данные. Мы же понятия не имеем как именно ты их читаешь. Ты же считаешь это не существенным.

akhan, я вижу цифры при выводе в лог, и наконец, я вижу цифры в окно variables при по шаговой отладке!
Невероятно! Значит проблема не в том что ты видишь, а в том что ты не видишь. Например ты не видишь исключения и stacktrace, которые четко указывают на место и причину.

akhanЕсли не поленились и прочитали с начала, то видели бы что я писал.

Да, тут тебе все должны. Мы уже поняли. Извини, что не внимательно читали.

akhanДа, видел названия екскепшна при отладке, но не запомнил.

Я тебе про Exception в первом комментарии сказал. Не ленись, прочти с начала.

akhanМожно еще раз повторить.
Не утруждай себя.

akhanНо, почему по имеющимися данными нельзя понять, в чем проблема?
Потому что у тебя не достаточно сноровки чтобы видеть косяк в данных и смотреть в нужную сторону. Потому что данных иногда бывает так много, что анализировать их визуально можно годами. Ты даже в массив внутри String не заглянул.

akhanЧто, студио в трассировке показывает одно, а в сообщении об ошибке другое?
О чем ты вообще. Есть Exception, у него есть Message и stackTrace. Это всё ключевые моменты для разработки на Java и многих других языках.
...
Рейтинг: 0 / 0
Из текста в число
    #39172080
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин чувак. Выведи просто на экран или на консоль переменную s. У тебя там какая-то
хрень которая не-число.
...
Рейтинг: 0 / 0
Из текста в число
    #39172092
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБлин чувак. Выведи просто на экран или на консоль переменную s. У тебя там какая-то
хрень которая не-число.

Чувак, я выводил содержимое s в лог на экране - там цифровые символы. ))) (((
...
Рейтинг: 0 / 0
Из текста в число
    #39172097
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanmaytonБлин чувак. Выведи просто на экран или на консоль переменную s. У тебя там какая-то
хрень которая не-число.

Чувак, я выводил содержимое s в лог на экране - там цифровые символы. ))) (((
Обманываешь? Если честно мы все здесь теряем время.

Я тебе бесплатно дарю исходник который (теоретически) участвует в генерации исключения.
Посмотри его. Может возникнут мысли.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
    public static int parseInt(String s, int radix)
                throws NumberFormatException
    {
        /*
         * WARNING: This method may be invoked early during VM initialization
         * before IntegerCache is initialized. Care must be taken to not use
         * the valueOf method.
         */

        if (s == null) {
            throw new NumberFormatException("null");
        }

        if (radix < Character.MIN_RADIX) {
            throw new NumberFormatException("radix " + radix +
                                            " less than Character.MIN_RADIX");
        }

        if (radix > Character.MAX_RADIX) {
            throw new NumberFormatException("radix " + radix +
                                            " greater than Character.MAX_RADIX");
        }

        int result = 0;
        boolean negative = false;
        int i = 0, len = s.length();
        int limit = -Integer.MAX_VALUE;
        int multmin;
        int digit;

        if (len > 0) {
            char firstChar = s.charAt(0);
            if (firstChar < '0') { // Possible leading "+" or "-"
                if (firstChar == '-') {
                    negative = true;
                    limit = Integer.MIN_VALUE;
                } else if (firstChar != '+')
                    throw NumberFormatException.forInputString(s);

                if (len == 1) // Cannot have lone "+" or "-"
                    throw NumberFormatException.forInputString(s);
                i++;
            }
            multmin = limit / radix;
            while (i < len) {
                // Accumulating negatively avoids surprises near MAX_VALUE
                digit = Character.digit(s.charAt(i++),radix);
                if (digit < 0) {
                    throw NumberFormatException.forInputString(s);
                }
                if (result < multmin) {
                    throw NumberFormatException.forInputString(s);
                }
                result *= radix;
                if (result < limit + digit) {
                    throw NumberFormatException.forInputString(s);
                }
                result -= digit;
            }
        } else {
            throw NumberFormatException.forInputString(s);
        }
        return negative ? result : -result;
    }


Давай. Удачи.
...
Рейтинг: 0 / 0
Из текста в число
    #39172154
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanЧувак, я выводил содержимое s в лог на экране - там цифровые символы. ))) (((
Чувак! Тебе сразу и сказали, ты привел вывод 3 символов из 4-ех. Где и какой 4-ый символ у тебя затесался - только тебе известно.

Т.ч., если не видишь суслика (а он есть!) - купи очки.
...
Рейтинг: 0 / 0
Из текста в число
    #39172169
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanможет один лишний символ вот этот - {String@3833}?
Что это?
Если нажать на треугольник слева от value = {char[36]3849}, то можно увидеть каждый символ массива по отдельности.
...
Рейтинг: 0 / 0
Из текста в число
    #39172177
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczakhanможет один лишний символ вот этот - {String@3833}?
Что это?
Если нажать на треугольник слева от value = {char[36]3849}, то можно увидеть каждый символ массива по отдельности.
жесть))) Blazkowicz++++
...
Рейтинг: 0 / 0
Из текста в число
    #39172178
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Спасибо, чуваки!

Вчера на домашнем компе не было видно, сегодня запустил на рабочем компе - появился этот символ!!! )))
02-16 15:39:51.448 10959-10959/com.example.akhann.ou D/myLogs: 999;1;Administrator;0;2249985;;;
его здесь не видно, зато в скриншоте видно!
...
Рейтинг: 0 / 0
Из текста в число
    #39172210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Из текста в число
    #39172349
akhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это символ - '\uFEFF'
Через trim() не удаляется.
Удалил через s = s.replaceAll("\uFEFF", "");
...
Рейтинг: 0 / 0
Из текста в число
    #39172355
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhan...Есть текстовый файл в UTF-8...
U+FEFF (неразрывный пробел с нулевой шириной), известный также как BOM (byte order mark, метка порядка байтов)

https://ru.wikipedia.org/wiki/Маркер_последовательности_байтов
...
Рейтинг: 0 / 0
Из текста в число
    #39172364
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akhanУдалил через s = s.replaceAll("\uFEFF", "");
replaceAll() заменяет регулярные выражения, а replace() подстроки. Трудно, наверное, когда документации нет?
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Из текста в число
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]