字符串数组为完整数字。 [" 2"," 2"]到22,而不是[2,2]

时间:2017-05-01 10:47:17

标签: java arrays string

我有一个String数组,包含双精度数。一个例子可以是包含[5,。,2]的String。我想成为双2,5。

我知道这很令人困惑,但我得到这样的数字的方式来自于:" y = 2.5x + 4.3" (称为ligning的变量)。

while(erTal(ligning.substring((ligning.indexOf("x")-i),(ligning.indexOf("x")-i+1))) == true){
                        xVærdi.add(ligning.substring((ligning.indexOf("x")-i),(ligning.indexOf("x")-i+1)));
                        System.out.println("There's a number to the left of x. Der er tilføjet " + i + " tal i alt");
                        i++;
                    }

检查String是否为数字的方法:

public static boolean erTal(String str)  {
        if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/") || str.equals("=")){
            return false;
        } else {
            return true;
        }     
    }

2 个答案:

答案 0 :(得分:1)

您可以使用空字符串作为分隔符(基本上撤消ligning)来连接元素,然后解析此字符串。

String[] ligning = {"2", ".", "5"};
String[] ligningReversed = new String[ligning.length];
for (int i = 0; i < ligning.length; i++) {
    ligningReversed[i] = ligning[ligning.length - i - 1];
}
double result = Double.parseDouble(String.join("", ligningReversed));

即使元素不是单个数字,也可以使用。

答案 1 :(得分:0)

试试这个,我认为你在找什么:

    // reverse the string 
    String s = new StringBuilder("[5,.,2]").reverse().toString();
    // split the string with break expression 
    String[] str = s.split("\\b");
    //join the string with required format
    StringJoiner sj = new StringJoiner(".");
    for (String t : str) {
        // to get digits only
        if(t.matches("\\d+")){
            sj.add(t);
        }
    }
    System.out.println(sj.toString());

希望有所帮助。