如何将Stringbuilder变量转换为long?

时间:2013-08-07 13:35:50

标签: android number-formatting

// Get the text file
        File file = new File(Environment.getExternalStorageDirectory()
                + "/Config/GPSListenerminTime.cfg");

        // Read text from file
        StringBuilder GPSListenerminTime = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;

            while ((line = br.readLine()) != null) {
                GPSListenerminTime.append(line);
                GPSListenerminTime.append('\n');

            }
        } catch (IOException e) {
            // TODO You'll need to add proper error handling here
        }   

我想从带有此代码的文件中读取一个数字并且效果很好,但是如何在requestLocationUpdates中将该数字用作long值? 我尝试以这种方式使用它,但它不起作用:

        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, Long.valueOf(String.valueOf(GPSListenerminTime)), 0, this);

我的文件只包含这个数字:10000 当我盯着服务时,我收到了这个错误:

  08-07 15:32:45.599: E/AndroidRuntime(19878): java.lang.RuntimeException:
Unable to create service com.example.gpslog.DataLogService: java.lang.NumberFormatException: 10000

4 个答案:

答案 0 :(得分:1)

您目前正在使用Long.valueOf这封装了Long.parseLong,因此您可以忽略建议使用该答案的答案。

当您收到数字格式异常时,您的字符串可能包含前导或尾随空格尝试使用;

Long.valueOf(String.valueOf(GPSListenerminTime).trim())

答案 1 :(得分:1)

以下是应该有效的代码段:

long requestLong = Long.parseLong(GPSListenerminTime.toString());

基本上,您将StringBuilder转换为常规String,然后让Long类解析它。

答案 2 :(得分:0)

试试这样:

StringBuilder oBuilder = your_string_builder;
long myLong = Long.parseLong(oBuilder.toString());

答案 3 :(得分:0)

NumberFormatException是解析“1000 / n”字符串的结果。只需使用trim()方法删除所有空字符:

Long.valueOf(yourStringBuilder.toString().trim());