【发布时间】:2014-09-07 19:42:40
【问题描述】:
在 Android 上,我要从一个屏幕转到另一个屏幕。在第一个屏幕上,将一个数字写入文件(例如 500),然后在第二个屏幕上读取它并分配给一个数组的值。我知道这很好用,因为它会在数组仍然是字符串时正确显示这个值。
问题是当我将此值转换为 Float 或 Int 并尝试在代码中的其他位置使用它时,我得到了 Nullpointerexception。自然,当我在测试期间插入手机时,它不会从我的手机内存中读取文件,因此会导致这样的异常。但是,如果我唯一改变的是将浮点数硬编码为数字而不是尝试转换字符串,那么它就可以了。
String[] customTest = new String[4];
这是数组。保留为字符串的 customTest[0] 显示得很好。
float count = Float.parseFloat(customTest[1]);
当我执行上述操作时(也尝试过 Float.valueOf),然后尝试使用 count 变量:
if (timerStringFormat.equals(df.format(randNumber)) || timerStringFormat.equals(df.format(randNumber2)) || timerStringFormat.equals(df.format(randNumber3))) {
bgGreen = false;
count -= 1.66;
我得到了 nullpointerexception,我认为这意味着该值在某种程度上为 null。我没有正确转换它吗?也许是因为字符串来自一个数组?我还尝试将 customTest[1] 分配给一个临时变量,然后将该临时变量转换为一个浮点数,但没有成功。我还尝试确保在读取文件并将值分配给数组之后发生尝试的浮点转换。任何帮助将不胜感激。
以下是文件如何根据请求将值分配给数组。
try {
File sdCard = Environment.getExternalStorageDirectory();
File myFile = new File(sdCard.getAbsolutePath());
// myFile.createNewFile();
File file = new File(myFile, "rlglc.txt");
String newLine = System.getProperty("line.separator");
FileInputStream fis = new FileInputStream(file);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fis));
String data = "";
int i = 0;
while ((data = myReader.readLine()) != null) {
customTest[i] = data;
i++;
}
myReader.close();
}catch(IOException e) {
e.printStackTrace();
}
我知道它可以正常工作,因为如果我将它设置为在屏幕上显示 Array 的任何元素的值,它就可以了。只有当我尝试将值更改为 Int 或 Float 时,它才会搞砸。
【问题讨论】:
-
很可能您的 customTest 数组中没有任何东西,因此该值为空。你如何把值放在你的数组中?你能展示你是如何分配你的数组的吗?
标签: java android arrays string nullpointerexception