Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串数组设置为整数。[“2”、“2”到22,而不是[2,2]_Java_Arrays_String - Fatal编程技术网

Java 将字符串数组设置为整数。[“2”、“2”到22,而不是[2,2]

Java 将字符串数组设置为整数。[“2”、“2”到22,而不是[2,2],java,arrays,string,Java,Arrays,String,我有一个字符串数组,包含双精度。例如,可以是包含[5,,,2]的字符串。我想成为双2,5 我知道这很让人困惑,但我得到这些数字的方式是通过输入:“y=2.5x+4.3”(变量称为ligning) 检查字符串是否为数字的方法: public static boolean erTal(String str) { if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/") || str.equ

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

我知道这很让人困惑,但我得到这些数字的方式是通过输入:“y=2.5x+4.3”(变量称为ligning)

检查字符串是否为数字的方法:

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

您可以使用空字符串作为delimeter连接元素(基本上是取消对齐),然后解析该字符串

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));
String[]aligning={“2”,“5”};
String[]ligningReversed=新字符串[ligning.length];
对于(int i=0;i

即使元素不是个位数,这也会起作用。

试试这个,我想你要找的是:

    // 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());

希望有帮助

你这是什么意思:[5,,,2]那不是双倍的……那是一个数字。我希望它是2.5(一个双精度),但我如何反转它?谢谢,但它不会反转数字。假设输入(对齐)是2.3倍,这样我会得到3.2倍。我如何反转它才能得到2.3?@Bassusour你需要反转阵列,有很多方法可以做到这一点。对于一个简单的例子,请查看更新后的答案。感谢您提供的代码,但我在
ligningReversed[I]=ligning[ligning.length-I-1]处收到一个错误告诉“需要数组,但找到字符串”。而不是硬编码的
对齐={“2”,“5”}它实际上是一个名为xVærdi的变量,包含这些元素;不对齐。我的错。此外,xVærdi是一个ArrayList,而不是一个数组,因此我不能在您的示例中使用它。当字符串来自ArrayList而不是array时,您能告诉我如何操作吗?@Bassusour在这种情况下,您可以使用
Collections.reverse(xVærdi)
而不是
for
循环进行反转。有关数组列表和数组之间的转换,请参见。
    // 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());