-2

我需要计算字符串中的项目数并分别显示它们中的每一个,例如 1) --- 2) ---- 但代码无法正常工作,

public static void main(String[] args) {
       String forms = "[436,43,4,900,703,483,......]"; << a long list
       int counter = 0;
       int index =0;
       String temp = "";
       for(int i=0; i<=forms.length();i++)
       {
            index = forms.indexOf(",");
            temp = forms.substring(0, index+1);
            System.out.println(i + ") " + temp);
            forms = forms.replace(temp,"");
            counter++;
       }
       System.out.println("Counter" + counter);
    }

结果显示代码通过字符串,但只是到它的中间。它有大约700个项目。但它显示只有 350 个项目。

4

5 回答 5

2

问题是replace执行替换,所以如果temp出现多次forms(例如因为重复条目),那么一些条目将被过早删除。(实际上它可能比这更糟糕:您可以只删除条目的一部分,如果您同时拥有3,and 123,,并导致奇怪的合并。)

最小的解决方法是省去replace和使用substring

forms = forms.substring(index+1);

但我建议您尝试split

于 2013-03-22T01:44:12.807 回答
1

Sting[] splitString = forms.split(",");

这会将字符串拆分为多个字符串,只要有,: 您可以使用任何其他分隔符进行拆分 - 即 : - 通过说forms.split(":");

然后,您可以通过说splitString[0]... 等来引用单个(拆分)字符串。

更具体地说,对于您的情况,您将遍历生成的字符串数组,如下所示:

for (int curr = 0 ; curr < splitString.size(); curr++){
      System.out.println(i + ") " + splitString[curr]; 
}
于 2013-03-22T01:40:11.347 回答
1
public static void main(String[] args) {
       String forms = "436,43,4,436,43,43"; 
       String[] parts = forms.split(",");
       int counter = parts.length;
       System.out.println("Counter" + counter);
}
于 2013-03-22T01:43:52.673 回答
1

您可以使用 split.To 避免 ] 和 [ 符号我们可以使用 replace

public static void main(String[] args) {
           String forms = "[436,43,4,436,43,43,......]"; 
           String[] splitString = forms.split(",");
             for(int i=1; i<=splitString.length;i++)
           {
                            System.out.println(i + ") " + splitString[i-1].replace("[", "").replace("]", ""));


           }
        }
于 2013-03-22T01:44:09.713 回答
1
String forms = "[436,43,4,436,43,44]"; 
           forms=forms.replace("[", "");
           forms=forms.replace("]", "");
           String resultArray[]=forms.split(",");

           for(int i=0; i<resultArray.length;i++)
           {

               System.out.println(i + ") " + resultArray[i]);


           }
           System.out.println("Counter" + resultArray.length);
于 2013-03-22T01:52:05.057 回答