アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaでRandom Access Fileから「整数」を読み込みたいのですがうまくいきません。
読み込むRandom Access Fileは次のようになっていて最初の" 3 0 0"だけint型で読み込んで後はそのまま文字列で読み込むつもりです。
※もともとStringで書き込んだので、各文字の間には一つ分のspaceが入っています。

 3 0 0     3 0 5     S p l i t                     L G           P a l a c e   o f   D i o c l e t i a n   ( D a l m a t i a )

下記のように文字列を読み込むプログラムは出来ました。

int keyLength = 5;
String key = "";
for (int i = 0; i < keyLength; i++)
key += inout.readChar();

今回はそれを整数で読み込みたいです。それでreadIntを使いました。

int key = 0;
key = inout.readInt();

でも、結果はこうなります:

33423840 305 Split LG Palace of Diocletian (Dalmatia)

このとてつもなく大きい数字"33423840"はなんでしょう???
"300"が欲しいのですが…。
どなたか解決方法を教えて下さい。お願いします。

A 回答 (1件)

>もともとStringで書き込んだので、…


という一文が気になります。もともとはStringで書き込んだのであれば、ファイルには「文字列」のデータとして入っているはずですよね?

実際、ファイルの内容は文字列で入っているように見受けられます。(文字列データは、テキストエディタで見た時に、目で見て分かる形で格納されているものです)
文字列で入っているデータを数値型で読み込もうとしているので、とんでもなく大きい値が入っているのだと思います。(文字列の"300"と、整数の300は、メモリ上に格納されている時の状態が全然違いますからね…)

であれば、文字列として取り込んでから、整数型に変換してあげればよいのではないでしょうか?
ちなみに、
int i = Integer.parseInt("300");
とすれば、文字列の"300"が整数の300に変換できます。
    • good
    • 0
この回答へのお礼

解決しました。
300の後ろの二つ分のスペースが邪魔していたようです。
それらを.trimで取り除いてInteger.parseInt()を使うと読み込めました。
実はInteger.parseInt()については説明をちらっと読んだことはあっても使ったことはなかったです。
助かりました。
ありがとうございました!

お礼日時:2003/10/28 06:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!