[英]Java - replacing word.charAt(i) with word.charAt(i+1) and making word.charAt(i+1) = 'A'
我需要看看在陣列中的每個單詞,所以做了一個for loop
與array[i]
等於String word
,然后我又for loop
具有一個if statement
即改變word.charAt(i)
與word.charAt(i+1)
並更改word.charAt(i+1) = 'A'
。
目的是通過檢查i
是否等於'A',然后通過i+1
切換位置來“加密”單詞。
這是我的代碼:
for(int i = 0; i < unchangedFileInput.length; i++) {
String word = unchangedFileInput[i];
for(int v = 0; v < word.length();v++) {
if (word.charAt(v) == 'A'
&& word.charAt(v+1) != 'A'
&& word.length() > 1) {
char[] mywordChars = word.toCharArray();
temp = mywordChars[v+1];
mywordChars[v] = mywordChars[v+1];
mywordChars[v+1] = 'A';
word = String.valueOf(mywordChars);
} else {
System.out.println(word);
}
}
System.out.println(word);
}
unlimitedFileInput是一個數組,其值為:
AVACADO
CHICKEN
BACON
AARDVARK
最終結果應如下所示:
AVACADO = VACADAO
CHICKEN = UNCHANGED
BACON = BCAON
AARDVARK = ARADVRAK
NAAN = NANA
您需要先檢查是否沒有超出數組限制。 我創建了一個測試框架,
public static void main(String[] args) {
String[] unchangedFileInput = { "AVACADO", "CHICKEN", "BACON",
"AARDVARK", "NAAN" };
String[] changedFileInput = new String[unchangedFileInput.length];
for (int i = 0; i < unchangedFileInput.length; i++) {
changedFileInput[i] = transformName(unchangedFileInput[i]);
System.out.printf("%s = %s%n", unchangedFileInput[i],
changedFileInput[i]);
}
}
然后將您的代碼包裝到一個方法中(並使用StringBuilder
創建了一個新的String
,刪除了數組轉換),
private static String transformName(String in) {
StringBuilder sb = new StringBuilder();
for (int i = 0, len = in.length(); i < len; i++) {
char ch = in.charAt(i);
if (ch == 'A') {
if (i + 1 < in.length() && in.charAt(i + 1) != 'A') {
sb.append(in.charAt(i + 1));
i++;
}
}
sb.append(ch);
}
return sb.toString();
}
我得到了您要求的輸出,
AVACADO = VACADAO
CHICKEN = CHICKEN
BACON = BCAON
AARDVARK = ARADVRAK
NAAN = NANA
為了實現所需的功能,您需要從單詞的末尾到開頭開始迭代,否則,當將“ A”替換為以下字符時,在下一個迭代中將再次具有“ A”。 如果從頭開始,則只會打一次每個“ A”。
使用此代碼
for(int v = 0; v < word.length();v++) {
if (word.charAt(v) == 'A' && word.charAt(v+1)
您將在String的末尾獲得IndexOutOfBoundsException。
如果您正在談論IndexOutOfBoundsException
錯誤!
我建議v < word.length() - 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.