2016-12-07 76 views
0

我只需要澄清一下。 我正在做的事情java--TitleCase練習使用JAVA

一定的練習寫一個靜態方法將取代每個單詞的所有首字母 與大寫字母的字符串。 例如:一個字符串只是一個字符串---->一個字符串只是一個字符串

我能夠完成所需的輸出,但我對這部分代碼感到困惑。

這似乎是工作:

char j; 
if (length > 1) { 
    for (int i = 0; i < length; i++) { 
     j = str2.charAt(i); 
     if (j == ' ') { 
      str = str + j + (Character.toUpperCase(str2.charAt(i + 1))); 
      i++; // for skip 
     } else { 
      str = str + j; 
     } 
    } 
} else { 
    str = "Please enter a string."; 
} 

然而,當我這樣說並不似乎工作:

Char j, k; 
if (length > 1) { 
    for (int i = 0; i < length; i++) { 
     j = str2.charAt(i); 
     k = str2.charAt(i + 1); 
     if (j == ' ') { 
      str = str + j + (Character.toUpperCase(k)); 
      i++; // for skip 
     } else { 
      str = str + j; 
     } 
    } 
} else { 
    str = "Please enter a string."; 
} 

可有人請解釋一下爲什麼?我有沒有想念或忽略某些東西?

這裏是整個代碼的方式:

package exercises.exercisesday3.part1; 

import java.util.Scanner; 

public class Exercise5CapitalLetters { 
public static void main(String args[]) { 
Scanner input = new Scanner(System.in); 
System.out.println("Enter source String: "); 
String capital = myTitleCase(" " + input.nextLine()); 

System.out.println(capital); 

input.close(); 
} 

public static String myTitleCase(String capitalLetter) { 

String str = ""; 
String str2 = capitalLetter.replaceAll("\\s+", " "); 

int length = str2.length(); 

char j; 
if (length > 1) { 
    for (int i = 0; i < length; i++) { 
     j = str2.charAt(i); 
     if (j == ' ') { 
     str = str + j + (Character.toUpperCase(str2.charAt(i + 1))); 
     i++; // for skip 
     } else { 
     str = str + j; 
     } 
    } 
} else { 
    str = "Please enter a string."; 
    } 
    return str.trim(); 
    } 
} 
+0

您可能需要提供關於你的問題的變量,如長度,STR2,STR等特殊初始化的更多詳細信息,否則用戶將獲得難以提供堅實的答案 – Coder

+0

注意到。將提供整個代碼。 –

+0

@Coder完成編輯問題。謝謝你提醒我。 –

回答

0

這是由於閱讀對於k值作爲k = str2.charAt(i + 1)不正確的方式應該改變顯示在下面的代碼。

在您的代碼中,嘗試訪問超出所提供字符串長度的字符。

這應該是糾正碼

char j, k=0; 
    if (length > 1) { 
     for (int i = 0; i < length; i++) { 
      j = str2.charAt(i); 
      if(i!=length-1){ 
       k = str2.charAt(i + 1); 
      }    
      if (j == ' ') { 
       str = str + j + (Character.toUpperCase(k)); 
       i++; // for skip 
      } else { 
       str = str + j; 
      } 
     } 
    } else { 
     str = "Please enter a string."; 
    } 
+0

我試過你的代碼並得到了這個結果 輸入源字符串: 一個字符串只是一個字符串 一個字符串只是一個字符串 –

+0

字符「g」缺失。 –

+0

更新的代碼工作! –