質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

3回答

2572閲覧

string型からint型への変更でのエラー(Android studio,java,BLE)

46psm

総合スコア16

Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/05/28 07:35

javaについてわからないことがあるので質問させていただきます。

私は現在Android(セントラル)とBLEモジュール(ペリフェラル)でBLE通信をし、BLEモジュールからAndroidへデータを送信しています。

送信するデータはuint8_tデータを格納した配列32ビット分です。
問題はAndroidのデータを受け取る側なのですが、
32ビットなら受け取ったcharacteristicからgetIntValue()でフォーマット指定をFORMAT_UINT32にすればよいのですが、
今後受け取るデータ数を増やす予定なのでUINT32では足りなくなってしまいます。
しかしgetIntValue()のフォーマットにはFORMAT_UINT64がないため、getStringValueを使用せざるを得ないことがわかりました。

そこで、getStringValueを使用して、Integer.parseInt()で受け取ったstring型データをint型に変換したのですが、Android studioのLogcatに以下のようなWarmが出力されてしまいました。

java.lang.NumberFormatException: Invalid int: " " at java.lang.Integer.invalidInt(Integer.java:137) at java.lang.Integer.parse(Integer.java:374) at java.lang.Integer.parseInt(Integer.java:365) at java.lang.Integer.parseInt(Integer.java:331) at com.example.ble4_valuedisplay.MainActivity$5.onCharacteristicChanged(MainActivity.java:306) at android.bluetooth.BluetoothGatt$1.onNotify(BluetoothGatt.java:463) at android.bluetooth.IBluetoothGattCallback$Stub.onTransact(IBluetoothGattCallback.java:403) at android.os.Binder.execTransact(Binder.java:404) at dalvik.system.NativeStart.run(Native Method)

このようなコードが繰り返し呼ばれてしまいます。
parseIntで引っかかっているのは何となくわかりますが、原因はなんでしょうか?
また、解決方法や他の手法について知っている方がいたら教えていただきたいです。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/05/28 08:14

そのデータというのはどういうデータなんでしょうか。 で、なぜ変換しなければいけないんでしょうか
46psm

2019/05/29 00:13

センサからの取得値データです。 変換するのは、そのまま画面表示をすると数値ではなく、記号で表示されるからです。
y_waiwai

2019/05/29 00:16

32ビット以上になるセンサデータですか? なんか間違ってるようにしか見えないですが。
guest

回答3

0

自己解決

getStringValueで受け取った値にたいしてgetByteをすることで解決しました。

投稿2019/05/29 00:30

46psm

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java.lang.NumberFormatException: Invalid int: " "

ログ通り、「空白」はintに変換できないというエラーですね。
trimしてから変換すれば良いのではないでしょうか。

投稿2019/05/28 07:46

sazi

総合スコア25184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

メッセージ、読んでください。

今回の場合は、「例外」と言います。
「例外(処理)」の項目を読んでください。(at 入門書)

java.lang.NumberFormatException

とあります。

これを分解すると

Number (数字) Format(フォーマット,書式) Exception (例外)

で、

次の理由で、

Invalid int: " "

要約すると " " っていうのがintに変換できない...系です。

言語やライブラリとかによっても変わってくると思いますが、普通、String -> int とかは「最初の文字を数字に変換する」ので、数字から始まっていないとダメなのです。

Java

1String s = "1123435423";

とか

Java

1String s = "100abc";

とかは、「数字以外がでるまでを一つ」とみなすので問題ありませんが、

Java

1String s = "hello123";

とかだと「変換できない」のです。

そしてC言語だと 0 が返ってきますが、C++やJavaといった例外機構を持っている言語なら、ここで例外が投げられます。

「数字に変換できない文字から始まっているよ」もしくは「すべて数字以外の文字ですよ」っていう例外。

だから、数字から始まるように、" " を 削除するとか、"0"~"9" 以外のデータを排除するとかみたいにしたほうがいい。

投稿2019/05/28 07:45

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/29 00:34

Integer.parseInt はそれほど柔軟でないですよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問