关于如何删除此逗号以使我的parseFloat正常工作,我感到有点困惑。以下是我正在阅读的信息,例如:`
541.0, 387.0
String num[] = in.nextLine().split(",");
// Trim and then parseFloat for x and y
float x = Float.parseFloat(num[0].trim());
float y = Float.parseFloat(num[1].trim());
num []用逗号分隔这些信息,因此最终得到:
num [0] = 541.0,
num [1] = 387.0
然后当我打电话给修剪时,逗号消失了。从我的理解修剪只删除了空白?有人可以解释一下吗?
答案 0 :(得分:9)
trim
不删除逗号,否。
split
删除传递的分隔符。因此split(",")
会删除逗号。
请注意,某些区域设置(例如法国)使用逗号作为小数点分隔符:Float.parseFloat()
(与区域设置无关,始终使用.
作为小数分隔符)可能表现出意外。
答案 1 :(得分:1)
来自文档,
返回字符串的副本,包含前导和尾随空格 删去。
如果此String对象表示空字符序列,或者 由此表示的字符序列的第一个和最后一个字符 字符串对象的代码都大于' \ u0020' (空间 (),然后返回对此String对象的引用。
否则,如果没有代码大于' \ u0020' 在字符串中,然后是一个表示空字符串的新String对象 已创建并返回。
否则,让k为字符串中第一个字符的索引 其代码大于' \ u0020',并且让m为其索引 字符串中的最后一个字符,其代码大于' \ u0020'。一个 创建新的String对象,表示此子字符串 以索引k处的字符开头并以。结尾的字符串 索引m处的字符,即this.substring(k,m + 1)的结果。
此方法可用于从中修剪空白(如上所述) 字符串的开头和结尾。
所以,不。 仅前导空格和尾随空格会受到影响。
如果您有兴趣,请点击[source code]。
现在,了解,
是如何删除的。你打电话给分裂了。
来自文档,
将此字符串 分割为给定正则表达式的 匹配。
此方法的工作方式就像通过调用双参数split方法一样 给定的表达式和一个零的限制参数。尾随空 因此,字符串不包含在结果数组中。
字符串" boo:和:foo",例如,产生以下结果 用这些表达式:
Regex Result : { "boo", "and", "foo" } o { "b", "", ":and:f" }
因此,分隔符被删除,字符串围绕它split
。和以前一样,这里是[source code]。关注超链接will lead you here。
参考您的帖子,num[0] = 541.0,
不正确。 num[0] = 541.0
(不带逗号)。
此外,您真的不需要致电trim()
,因为Double.parseDouble()
功能已经这样做了。 [main source] [related](请参阅第二个链接中的第1009行)
答案 2 :(得分:0)
当您致电split()
时,它会使用分隔符,
和'分割'基于此输入到数组中。因此,删除了逗号,而不是拨打trim().
我不知道你是怎么想的num[0] = 541.0,
。
答案 3 :(得分:0)
修剪会删除单词开头和结尾的空格。
例如单词"测试"变成"测试"。