2016-11-10 132 views
2

我正在製作一個程序來測試數組中的字符串是否是迴文。
我想從一個數組中取出字符串,並取出任何空格或其他字符,以便它只是字母或數字。
然後把「乾淨的」字符串存儲到一個新的數組中。
我用這種方法得到的錯誤是它說第4行的左邊需要一個變量,但是我已經聲明它是一個字符串數組。將數組中的字符串複製到新數組中

這是我到目前爲止。

for (i = 0; i < dirty.length; i++) { 
     for (int j = 0; j < dirty[i].length(); j++) 
     if (Character.isLetterOrDigit(dirty[i].charAt(j))) { 
      clean[i].charAt(j) = dirty[i].charAt(j); 
     } 
} 

編輯:我發現最簡單的解決方案是創建一個臨時字符串變量添加一個字符取決於他們是否是一個字母或數字的時間。然後轉換爲小寫字母,然後存儲到字符串數組中。這裏是改變後的代碼:

String clean [] = new String [i]; //存儲元件的數量是骯髒的陣列具有不爲空

for (i = 0; i < dirty.length; i++) { 
     if (dirty[i] != null) // Only copy strings from dirty array if the value of the element at position i is not empty 
     { 
      for (int j = 0; j < dirty[i].length(); j++) { 
       if (Character.isLetterOrDigit(dirty[i].charAt(j)))// take only letters and digits 
       { 
        temp += dirty[i].charAt(j);// take the strings from the dirty array and store it into the temp variable 

       } 
      } 
      temp = temp.toLowerCase(); // take all strings and convert them to lower case 
      clean[i] = temp; // take the strings from the temp variable and store them into a new array 
      temp = ""; // reset the temp variable so it has no value 
     } 
    } 
+1

什麼是'dirty'變量類型? –

+0

看起來是一串字符串 –

+1

你是否聽說過字符串是不可變的? –

回答

0

String.charAt(i)只是在給定的位置返回char。您無法爲其分配新的值。但你可以String更改爲char秒的數組,然後你可以修改它,只要你想

char[] dirtyTab = dirty.toCharArray(); 
0

您不能修改字符串。它們是不可改變的。

但是,您可以覆蓋數組中的值。編寫一個方法來清理一個字符串。

for (i = 0; i < dirty.length; i++) { 
    dirty[i] = clean(dirty[i]); 
} 

而且其建議你寫一個單獨的方法來檢查迴文以及

0

字符串是不可變的。你可以使用StringBuilder,因爲它不是不可變的,你可以修改它。在你的情況下,你可以使用StringBuilder類的void setCharAt(int index, char ch)函數。

1
String clean = dirty.codePoints() 
        .filter(Character::isLetterOrDigit) 
        .collect(StringBuilder::new, 
          StringBuilder::appendCodePoint, 
          StringBuilder::append) 
        .toString(); 

但是,它也有可能使用replaceAll與適當的正則表達式來產生一個新的字符串只包含字母和數字。

here摘自:

String clean = dirty.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}]", ""); 
相關問題