-3

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

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

编辑

我犯了一个错误。因为我发布了我的代码的一部分所以犯了一些错误。请查看更新的代码

4

5 回答 5

2

我想你的意思是说你想用(“_”)分割,但你写了

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

所以它会分裂为-not_

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

_3+3)*_4

2)_+_+_

编辑:

之后String z[]=y.split("_");,你得到的长度3是绝对正确的。如下所示:

-->(空白) firstElement

_(split on first _ )

--> 3+3)* secondElement

_(split on second_ )

-->4-2) thirdElement

于 2013-09-06T07:49:48.653 回答
1
String z[]=y.split("_");

代替

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

尝试这个,

    String x = "____";
    String z[] = x.split("_");
    System.out.println("length  " + z.length);

输出length 0

于 2013-09-06T07:50:33.827 回答
1

您不应该与参数“-”分开。改用“_”!

于 2013-09-06T07:50:44.470 回答
0
String x ="(3+3)*(4-2)(+(+(";
            ____________________________________
String x-->|        (3+3)*(4-2)(((              | 
           |____________________________________|  
String y=x.replace("(", "_");
            ____________________________________
String y-->|        _3+3)*_4-2)___              | 
           |____________________________________|  

之后String z[]=y.split("-");

z[0]----->3+3)*

z[1]----->4-2)  

while"___".split("_")计算空字符串。

所以长度z[]为 2

于 2013-09-06T07:56:40.223 回答
0
String z[]=y.split("-");
z[0] = "_3+3)*_4";
z[1] = "2)_+_+_";

所以z.length == 2。我在这里看不到任何缺陷,除非你想用_.

于 2013-09-06T07:50:35.240 回答