Как я могу получить int из string?

251
22 августа 2017, 11:57

Есть такой кусочек кода. По bluetooth я получаю строку с двумя переменными, разделяю их по пайпу, потом каждую переменную по отдельности показываю на экране, все прекрасно работает. Но как видите, я пытаюсь использовать teta=Integer.parseInt(var[0]); для того, чтобы повернуть ImageView trailer. Хотя setRotation вроде float просит, но и int у меня кушает хорошо. int teta; объявлена ранее

BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String text = intent.getStringExtra("theMessage");
        TextView fi_text = (TextView)findViewById(R.id.fi_text);
        TextView teta_text = (TextView)findViewById(R.id.teta_text);
        String var[]=text.split("\\|");
        teta_text.setText(var[0]); //teta значение с bt
        teta=Integer.parseInt(var[0]);
        fi_text.setText(var[1]); //fi значение с bt

        trailer.setRotation(teta);
    }
};

Я уверен, что проблема именно в этом, и что я неправильно пользуюсь этой функцией) Как я могу сделать, чтобы int переменную можно было здесь использовать и чтобы приложение не падало?

Использую parseInt по причине того, что нашел такую штуку и она работает int i = Integer.parseInt("234");. А как с переменной работать не знаю, не нашел ничего нужного

Answer 1

И все-таки да, виной всему кракозябры. В любом случае, ответ получен, спасибо за помощь.

Поскольку проблема оказалась в том, что по bluetooth каналу мне приходили кракозябры, их было хорошо видно в логах и они всегда стояли впереди и в конце сообщения, количество их не изменялось, то я просто перед отправкой на другое активити, где происходит дальнейшая обработка этих данных, удалил эти кракозябры функцией substring.

while (true) {
            // Read from the InputStream
            try {
                bytes = mmInStream.read(buffer);
                String incomingMessage = new String(buffer, 0, bytes);
                Log.d(TAG, "InputStream: " + incomingMessage);
                Intent incomingMessageIntent = new Intent("incomingMessage");
                incomingMessageIntent.putExtra("theMessage", incomingMessage.substring(2, incomingMessage.length()-1));
                //удаляю кракозябры
                LocalBroadcastManager.getInstance(mContext).sendBroadcast(incomingMessageIntent);
            } catch (IOException e) {
                Log.e(TAG, "write: Error reading Input Stream. " + e.getMessage() );
                break;
            }
        }
READ ALSO
Как правильно должен работать ssl?

Как правильно должен работать ssl?

Добрый день! Есть сервер и клиент, написанные на джавеКлиент общедоступен

257
Есть ли наследование в моделировании? [требует правки]

Есть ли наследование в моделировании? [требует правки]

От АнтиООП-шников часто можно услышать: "В моделировании никакого наследования нет!", я уже слышал эта два разаА откуда звон то?

247
Актуален ли StringBuilder в 2017?

Актуален ли StringBuilder в 2017?

С давних пор есть мнение, что конкатинирвать строки в Java нужно при помощи StringBuilder, но с появлением Java 8 появилось много статей о том, что можно...

212
Проблема переименование переменной с JavaParser

Проблема переименование переменной с JavaParser

Доброго времени суток! Столкнулся с проблемой при работе с JavaParser

230