2013-03-22 46 views
-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件物品。

+0

我看到字符串中有一些重复的项目,但你只是想打印唯一的项目,对不对? – 2013-03-22 01:48:05

+0

我真的不知道反对票是什么意思? – 2013-03-22 03:46:27

+0

@亨利莱,不,我犯了错误的数字是不同的。 – 2013-03-22 03:47:10

回答

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); 
1

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

此分割字符串分为多个字符串只要有一个,:你可以使用任何其他分隔符分割 - 即: - 说出forms.split(":");

然后,您可以参照个体(分裂)说splitString[0] ......等字符串

更具体地说是关于你的情况,你会通过生成的字符串数组循环如下:

for (int curr = 0 ; curr < splitString.size(); curr++){ 
     System.out.println(i + ") " + splitString[curr]; 
} 
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); 
} 
+1

请注意解释你的答案。 – 2013-03-22 01:48:13

1

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

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("]", "")); 


      } 
     } 
+0

@丹尼尔摩根你检查了这一个 – PSR 2013-03-22 01:47:20

2

的问题是,replace进行替换 - 所有,所以如果temp多次出现forms (例如由于重复的条目),那么一些条目将被过早删除。 (实际上,它可以比这还要糟糕:您可以删除刚才一个条目的一部分,如果如您同时拥有3,123,,并且会导致奇怪的合并。)

最小修复与replace和使用分配substring

forms = forms.substring(index+1); 

,但我建议您尝试split代替。

相关问题