如何将 Stringbuilder 变量变为 long?
Posted
技术标签:
【中文标题】如何将 Stringbuilder 变量变为 long?【英文标题】:How can i turn Stringbuilder variable to a 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
【问题讨论】:
【参考方案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());
【讨论】:
以上是关于如何将 Stringbuilder 变量变为 long?的主要内容,如果未能解决你的问题,请参考以下文章