在Android上我将从一个屏幕转到另一个屏幕。在第一个屏幕上,一个数字被写入一个文件(Say 500),然后在第二个屏幕上被读取并分配给一个数组的值。我知道这样可以正常工作,因为它会正确地显示Array中的这个值,而它仍然是一个String。
问题是当我将此值转换为Float或Int并尝试在代码中的其他位置使用它时,我得到Nullpointerexception。当然,当我在测试期间插入手机时,它不会从我的手机内存中读取文件,因此会导致这种异常。但是,如果我唯一改变的是将浮点数硬编码为数字而不是尝试转换字符串,那么它的工作正常。
String[] customTest = new String[4];
这是阵列。 customTest [0]保留为String显示就好了。
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。我没有正确转换它吗?也许是因为String来自一个数组?我还尝试将customTest [1]分配给临时变量,然后将该temp变量转换为float而没有成功。我还尝试确保在读取文件并将值分配给数组后发生尝试的Float转换。任何帮助将不胜感激。
下面是文件如何根据请求将值分配给数组。
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();
}
我知道它工作正常,因为如果我将它设置为在屏幕上显示数组的任何元素的值,它就可以了。只有当我尝试将值更改为Int或Float时,它才会崩溃。
答案 0 :(得分:0)
您收到了NullPointerException
,因此首先请确保 customTest[1]
永远不会为空。当您放置时
float count = Float.parseFloat(customTest[1]);
,首先记录customTest[1]
的值,因为我认为customTest[1]
为空。
编辑:
float count = 0;
if(customTest[1]!=null){
count = Float.parseFloat(customTest[1]);
}