2013-03-22 23 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代替。

相關問題