我正在从书中做一个简单的练习,我对 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...
}