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"が欲しいのですが…。
どなたか解決方法を教えて下さい。お願いします。
No.1ベストアンサー
- 回答日時:
>もともとStringで書き込んだので、…
という一文が気になります。もともとはStringで書き込んだのであれば、ファイルには「文字列」のデータとして入っているはずですよね?
実際、ファイルの内容は文字列で入っているように見受けられます。(文字列データは、テキストエディタで見た時に、目で見て分かる形で格納されているものです)
文字列で入っているデータを数値型で読み込もうとしているので、とんでもなく大きい値が入っているのだと思います。(文字列の"300"と、整数の300は、メモリ上に格納されている時の状態が全然違いますからね…)
であれば、文字列として取り込んでから、整数型に変換してあげればよいのではないでしょうか?
ちなみに、
int i = Integer.parseInt("300");
とすれば、文字列の"300"が整数の300に変換できます。
解決しました。
300の後ろの二つ分のスペースが邪魔していたようです。
それらを.trimで取り除いてInteger.parseInt()を使うと読み込めました。
実はInteger.parseInt()については説明をちらっと読んだことはあっても使ったことはなかったです。
助かりました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Access(アクセス) accessでexcelを読み込む時のデータ型 1 2022/03/28 19:45
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
このプログラミング誰か教えて...
-
このプログラミング誰か教えて...
-
BCD形式で時刻を!
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
Evaluate()に文字列の形式の数...
-
wsprintf関数の使い方について
-
matchesを否定文として使う方法...
-
getParameterの値変更
-
ResultSetの内部構造(Java)
-
C# LinqでDateTime型の値を取得
-
Javaの問題なのですが、「3文字...
-
DOSバッチで変数の値を変数名に...
-
線形合同法(乗算型)による乱...
-
ダブルクォーテーションとシン...
-
偶数ビットだけと奇数ビットだ...
-
String型の値が大文字か小文字...
-
indexOf("Internet Explorer")!...
-
DateTimePickerに値を入れたい...
-
String str = "a\\\\b\\\\c";
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
wsprintf関数の使い方について
-
javaのCSVデータ読込についてです
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
Stringクラスの変数の格納アド...
-
結合した文字列をファイル名に...
-
BCD形式で時刻を!
-
DateTimePickerに値を入れたい...
-
Evaluate()に文字列の形式の数...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
DOSバッチで変数の値を変数名に...
-
C言語の変数(LSB)の合わせ込...
-
excel vba 時間計算と条件分岐...
-
Javaの問題なのですが、「3文字...
-
matchesを否定文として使う方法...
-
8桁整数を限りなく短い文字列に...
-
JSPでの計算結果表示
-
指定した日付が何日前なのかを...
おすすめ情報