私は本から簡単な演習を行っていますが、Java 関数 parseInt がどのように機能するかについて少し混乱しています。入力ファイルから行を読み取り、StringTokenizer を使用してそれを分割し、各部分を整数として解析したいと考えています。
ウォッチ ウィンドウで、parseInt 関数の入力が実際に有効な整数 ("35" など) と思われる文字列であることを確認しました。ただし、値「35」を保持するstr.charAt
変数で関数を使用しようとすると、奇妙な結果が得られます。str
str.charAt(0) == ""
str.charAt(1) == "3"
str.charAt(2) == ""
str.charAt(3) == "5"
これはおそらくエンコーディングに何らかの形で関連する問題であるように思われるので、ファイルを読み取るこの方法を使用して修正しようとしました:
InputStreamReader reader = new InputStreamReader(new FileInputStream(inputfile), "UTF-8");
(エディターで UTF-8 エンコーディングを使用してファイルを明示的に保存しました) が、これは役に立ちませんでした。何が問題なのか、それを修正する方法はありますか?
編集:私のサンプル
InputStreamReader reader = new InputStreamReader(new FileInputStream(inputfile), "UTF-8");
BufferedReader bfreader = new BufferedReader(reader);
line = bfreader.readLine();
while (line !=null)
{
String[] valueStrings = line.split(" ");
String hole = valueStrings[0];
int[] values = new int[4];
for (int i = 0; i <values.length; i++){
String nr = valueStrings[i+1].trim();
values [i] = Integer.parseInt(nr);
}
// it breaks at the parseInt here, the rest is not even executed...
}