【问题标题】:How can i turn Stringbuilder variable to a long?如何将 Stringbuilder 变量变为 long?
【发布时间】:2013-08-07 13:35:50
【问题描述】:
// 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 中将该数字用作长值? 我尝试以这种方式使用它,但它不起作用:

        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

【问题讨论】:

    标签: android number-formatting


    【解决方案1】:

    这是一个应该可以工作的代码 sn-p:

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

    基本上,您是将StringBuilder 转换为常规String,然后让Long 类对其进行解析。

    【讨论】:

    • 如果你阅读他们使用 Long.valueOf 的代码,这已经封装了 Long.parseLong。
    • 我尝试了它和 String.valueOf 但我得到了相同的 numberformatexception。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 不,他在我的答案之后编辑了他的答案;)无论如何我要给他+1
      【解决方案4】:

      试试这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 1970-01-01
        • 2016-08-10
        • 1970-01-01
        相关资源
        最近更新 更多