2015-06-16 92 views
-1
import java.util.Scanner; 

public class StringWithoutDuplicate { 

    public static void stringWithoutDuplicate(String s1) 
    { 
     int n = s1.length(); 
     int i = 0; 
     while(i<n) 
     { 
      if(s1.charAt(i) == s1.charAt(i+1)) 
      { 
       if(s1.charAt(i) == s1.charAt(n-1)) 
       { 
        System.out.println(s1.charAt(i)); 
       } 
       i++; 
      } 
      else if(s1.charAt(i) != s1.charAt(i+1)) 
      { 
       if(s1.charAt(i) == s1.charAt(n-1)) 
       { 
        System.out.println(s1.charAt(i)); 
       } 
       System.out.println(s1.charAt(i));; 
       i++; 
      } 
     } 
    } 

    public static void main(String[] args) { 
     Scanner s = new Scanner(System.in); 
     s.useDelimiter(","); 
     String s1 = s.next(); 

     System.out.println(s1); 

     stringWithoutDuplicate(s1); 

    } 
} 

該代碼給出了輸出,但有一個例外 請告訴我在我的代碼中的錯誤以及糾正它的方法。 我不想改變我的代碼的邏輯,所以只用這個邏輯來解決它。刪除字符串中的重複字符

+0

你有什麼異常? –

+0

你得到的錯誤是因爲s1.charAt(i + 1)。在某些時候,i + 1會超過s1的長度。 – Shar1er80

回答

0

錯誤:

i的範圍是從0 to (n-1)這是相同的字符指數在你的字符串s1的範圍內。這是對的。

但是你while loop的最後一次迭代中,i = n-1

在這一點上,s1.charAt(i+1)變得一樣s1.charAt(n)。這應該是一個錯誤。

0
public static void stringWithoutDuplicate(String s1) { 
    int prev = -1; 
    for (int i = 0, size = s1.length(); i < size; ++i) { 
     char c = s1.charAt(i); 
     if (c != prev) { 
      System.out.println(c); 
      prev = c; 
     } 
    } 
}