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

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

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

вот что выводит отладка - внизу андроид студио закладка Debugger, Variables:
s={String@3833}"999"
count = 4
hashcode = 0
offset = 0
value = {char[36]3849}
....
...
Рейтинг: 0 / 0
15.02.2016, 18:50
    #39171711
akhan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
использовал пошаговую отладку, стоит на breakpoint-е.
переменная должна содержать число 999
...
Рейтинг: 0 / 0
15.02.2016, 18:54
    #39171715
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
akhanандроид студио
Начинают всплывать любопытные подробности.
Кстати, если посмотреть в JavaDoc , то можно узнать что valueOf возвращает тип Integer, а parseInt - int
Так что там с исключением?
...
Рейтинг: 0 / 0
15.02.2016, 19:00
    #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
15.02.2016, 19:57
    #39171777
akhan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
Blazkowicz,

parseInt тоже пробовал (
...
Рейтинг: 0 / 0
15.02.2016, 19:59
    #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
15.02.2016, 20:09
    #39171781
akhan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
akhan,

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

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


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

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

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

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

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

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

в теме ))
Только не думал, что для такого очевидного необходимо делать try exception. Я же виже в файле только цифры, я вижу цифры при выводе в лог, и наконец, я вижу цифры в окно variables при по шаговой отладке! Если не поленились и прочитали с начала, то видели бы что я писал. Да, видел названия екскепшна при отладке, но не запомнил. Можно еще раз повторить. Но, почему по имеющимися данными нельзя понять, в чем проблема? Что, студио в трассировке показывает одно, а в сообщении об ошибке другое?
...
Рейтинг: 0 / 0
16.02.2016, 11:18
    #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
16.02.2016, 11:20
    #39172080
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
Блин чувак. Выведи просто на экран или на консоль переменную s. У тебя там какая-то
хрень которая не-число.
...
Рейтинг: 0 / 0
16.02.2016, 11:31
    #39172092
akhan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
maytonБлин чувак. Выведи просто на экран или на консоль переменную s. У тебя там какая-то
хрень которая не-число.

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

Т.ч., если не видишь суслика (а он есть!) - купи очки.
...
Рейтинг: 0 / 0
16.02.2016, 12:42
    #39172169
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
akhanможет один лишний символ вот этот - {String@3833}?
Что это?
Если нажать на треугольник слева от value = {char[36]3849}, то можно увидеть каждый символ массива по отдельности.
...
Рейтинг: 0 / 0
16.02.2016, 12:47
    #39172177
golovonometr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из текста в число
Blazkowiczakhanможет один лишний символ вот этот - {String@3833}?
Что это?
Если нажать на треугольник слева от value = {char[36]3849}, то можно увидеть каждый символ массива по отдельности.
жесть))) Blazkowicz++++
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Из текста в число / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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