2014-11-17 88 views
0

對於我在課堂上的項目,我必須計算二元組。
例如,如果輸入是這一行:如何查找字符串中的所有字符對

ab ab. 

會有總共6二單元組。
它們是:

"ab", "b ", " a", "ab", "b." and ".\n" 

我怎麼能成炭掃描輸入字符,並找到所有的二重對稱?
我目前擁有的是:

int i=0; 
while(input.hasNext()){ 
    char c = input.next().charAt(i); 
    i++; 
    System.out.println(c); 
} 

然而,這僅僅打印出在一個時間從字符串中的一個字符。任何人都可以幫我修改我的代碼嗎?

+0

您使用哪種語言? C++?此外,正則表達式不需要解決這個問題。沒有,很容易解決。 – AeroX

+0

我正在使用Java。 – paupau

+1

您應該將整行讀入一個String對象,然後使用字符串操作函數查找所有二元組。 – RealSkeptic

回答

0

你應該在你的caracters迭代一旦線路被完全讀取,而不是使用Scanner,像這樣的東西:

String input = "ab ab.\n"; 

for(int i = 0; i < input.length() - 1; i++){ 
    String c = "" + input.charAt(i) + input.charAt(i + 1); 
    System.out.println(c); 
} 
0

右鍵你可能想,因爲我不將此視爲僞代碼程序在Java中,但邏輯是相同的,不管語言如何。

您想要保存以前的字符讀入是否在一個單獨的變量中,以便您可以將它加入到當前讀取的字符中以將其變爲二進制。

我們在第一個循環中沒有做任何事情,所以我們有2個字符開頭。這就是if (p == '\0') continue;的用途。

int i = 0; 
char p, c = '\0'; 
while (input.hasNext()) 
{ 
    p = c; 
    c = input.next().charAt(i++); 
    if (p == '\0') continue; // Check that p is not null (so that we have 2 chars) 

    System.out.println("{0}{1}", p, c); 
} 
相關問題