NullPointerException将String转换为Float

时间:2014-09-07 19:42:40

标签: java android arrays string nullpointerexception

在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时,它才会崩溃。

1 个答案:

答案 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]);
}