因此,我們的目標是在字符串中查找「zip」和「zap」等模式,從'z'開始並以'p'結尾。然後,對於所有這樣的字符串,請刪除中間的字母。如何將一個字符串的多個部分放入列表中?
我想到的是,我使用for循環來檢查字符串的每個字母,一旦它到達'z',它就會得到indexOf('p'),並把它放在中間一個ArrayList,同時從原始字符串中刪除它,以便可以找到indexOf('p')。
問題是,我找不到一種方法來做到這一點,因爲我對Java相當陌生。如果有人可以幫助我感謝:)
這是我到目前爲止的代碼
package Homework;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class ZipZap {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> list = new ArrayList<String>();
System.out.print("Write a sentence with no spaces:");
String sen = in.next();
int len = sen.length();
int p1 = sen.indexOf('p');
String word = null;
String idk = null;
for(int i=0; i<len; i++){
if(sen.charAt(i)=='z'){
word = sen.substring(i, p1+1);
list.add(word);
idk = sen.replace(word,"");
i=0;
}
}
}
}
也許看看'String#split'將'String'拆分爲一個單詞數組 – MadProgrammer
使用String.split來查找所有的「z」(http://stackoverflow.com/questions/2206378 /如何對分裂一個字符串,但是,也-保持最分隔符)。那麼對於列表中的每個單詞,將第二個位置的所有字母替換爲第一個「p」之前 –
如果在字母「z」之前出現「p」,則此代碼將失敗。即,「xxpxxzxxpxx」失敗。它也失敗了「xxzxxpxxz」。那是因爲你只調用sen.indexOf('p')一次。您應該在找到'z'後調用它,並且應該使用帶有兩個參數的indexOf()版本,以便您可以指定'z'位置作爲搜索的起始位置。 –