在分隔符“1”之前删除浮点值中的多余点&引用;使用java发生
我正在生成一个统计计算器应用程序 所以我想像这样格式化edittext的输入 i/p=3.5.6,6.5至3.5,6.5 使用“,”(逗号)作为分隔符,以便在出现“,”时将输入字符串拆分为浮点数组 我想忽略3.5[.6]并生成如下数组 s[1]=3.5,s[2]=6.5 在计算由于额外的“.”点导致的平均应用程序崩溃时在分隔符“1”之前删除浮点值中的多余点&引用;使用java发生,java,android,android-edittext,Java,Android,Android Edittext,我正在生成一个统计计算器应用程序 所以我想像这样格式化edittext的输入 i/p=3.5.6,6.5至3.5,6.5 使用“,”(逗号)作为分隔符,以便在出现“,”时将输入字符串拆分为浮点数组 我想忽略3.5[.6]并生成如下数组 s[1]=3.5,s[2]=6.5 在计算由于额外的“.”点导致的平均应用程序崩溃时 您可以像这样使用正则表达式: public static void main(String[] args) { String s = "3.5.6, 6.5";
您可以像这样使用正则表达式:
public static void main(String[] args) {
String s = "3.5.6, 6.5";
s = s.replaceAll("(?<=\\d\\.\\d)\\.\\d", "");// positive look behind. Only replace `.[digit]` if it is preceeded by [digit][.][digit]
System.out.println(s);
String[] arr = s.split(",");
System.out.println(Arrays.toString(arr));
}
这个简单的函数(这里的IdeOne链接:)怎么样: 然后在代码中替换此语句:
farray[i] = Float.parseFloat(strarray[i]);
与:
它起作用了,但如果我只给出一个输入作为“3.5”。然后应用程序强制关闭。我尝试了你的输入。。我的代码运行良好。。错误是什么?对不起,我的错误..现在在s.split(“,”)之后调用myParseFloat;它奏效了,非常感谢。。
public static void main(String[] args) {
String s = "3.5.6, 6.5";
s = s.replaceAll("(?<=\\d\\.\\d)\\.\\d", "");// positive look behind. Only replace `.[digit]` if it is preceeded by [digit][.][digit]
System.out.println(s);
String[] arr = s.split(",");
System.out.println(Arrays.toString(arr));
}
3.5, 6.5 --> value of s after replacement
[3.5, 6.5] --> array contents
public static float myParseFloat(String str) {
int firstDot = str.indexOf('.');
if (firstDot != -1) {
int secondDot = str.indexOf('.', firstDot+1);
return Float.parseFloat(secondDot == -1 ? str : str.substring(0,secondDot));
}
return Float.parseFloat(str);
}
farray[i] = Float.parseFloat(strarray[i]);
farray[i] = myParseFloat(strarray[i]);