在分隔符“1”之前删除浮点值中的多余点&引用;使用java发生

在分隔符“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";

我正在生成一个统计计算器应用程序

所以我想像这样格式化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";
    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]);