Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 为什么使用“替换”后长度会减少?_Java - Fatal编程技术网

Java 为什么使用“替换”后长度会减少?

Java 为什么使用“替换”后长度会减少?,java,Java,我有一个字符串“(3+3)*(4-2)(+(+)(“)。为了在()存在的地方拆分它,我首先使用replace方法将给定字符串替换为+,然后我想找到新数组的长度。在给定字符串中有5个(所以数组的长度应该是5,但它给了我2。我可以知道为什么会出现这种情况吗 String x =String x ="(3+3)*(4-2)((("; String y=x.replace("(", "_"); String z[]=y.split("_"); System.out.printl

我有一个字符串
“(3+3)*(4-2)(+(+)(“
)。为了在
)存在的地方拆分它,我首先使用replace方法将给定字符串替换为
+
,然后我想找到新数组的长度。在给定字符串中有5个
所以数组的长度应该是5,但它给了我2。我可以知道为什么会出现这种情况吗

String x =String x ="(3+3)*(4-2)(((";
    String y=x.replace("(", "_");
    String z[]=y.split("_");

    System.out.println(y);

    System.out.println("length  "+z.length);
输出是

_3+3)*_4-2)___
长度3

编辑


我犯了一个错误。因为我发布了我的部分代码,所以犯了一些错误。请查看更新的代码。我想你的意思是说你想按(“u”)拆分,但你已经编写了

字符串z[]=y.split(“-”);

因此,它将被
-
而不是
\uuu

所以数组中的两个部分将是

\u3+3)*\u4

2)\+\\\

编辑:

字符串z[]=y.split(“”)
之后,您得到的长度是
3
,这是绝对正确的。如下所示:

-->(空白)
firstElement

String z[]=y.split("_");
_
(先拆分)

-->3+3)*
secondElement

String z[]=y.split("_");
_
(第二次拆分)

-->4-2)
thirdElement

String z[]=y.split("_");
而不是

String z[]=y.split("-");
试试这个

    String x = "____";
    String z[] = x.split("_");
    System.out.println("length  " + z.length);
输出
长度0

String z[]=y.split("-");
z[0] = "_3+3)*_4";
z[1] = "2)_+_+_";

因此
z.length==2
。我在这里没有看到任何缺陷,除非您想按
\u
分割,否则不应使用参数“-”进行分割。请改用“\u”

及 在
字符串z[]=y.split(“-”)之后;

“\uuuuuuu.”split(“\u”)
计算空字符串


因此,
z[]
的长度是2

\uuu不是-。这是两个不同的符号替换值是uu除以拆分值是-,您可以围绕“-”字符拆分,而不是“u”字符。如果您打印出z[0]您会发现问题。@njzk2您应该将其作为答案发布。我发布真实代码时出错,请查看新代码。在其他地方存在问题,我认为我的错误在这一部分。但我仍然应该感谢您费尽心思寻找解释