2014-11-17 102 views
0

我該怎麼做?用字母顯示單詞的字母

給我一個字>糖

小號

SUG

這是我到目前爲止:

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Enter a word:"); 
    String word = scan.nextLine(); 
    int length = word.length(); 
    for(int number = 0; number < length; number++){ 
     System.out.println(word.charAt(number)); 
    } 
} 

這使得字顯示字母顯示。

+0

*「我做了這件事,它使字顯示字母」* ...並不是你想要的? – MadProgrammer

+0

不,它輸出這樣的: 小號 ü 摹 一個 爲r的不是s蘇SUG菅糖 –

+0

路易,你真的應該通過點擊投票下的綠色對勾標記對您的問題的答案接受計數,如果答案幫助你是對的。 –

回答

3

一種方法是使用String concaternation的形式...

String word = "Sugar"; 
int length = word.length(); 
StringBuilder sb = new StringBuilder(word.length()); 
for (int number = 0; number < length; number++) { 
    sb.append(word.charAt(number)); 
    System.out.println(sb.toString()); 
} 

基本上,這個追加每個角色在每個循環的建設者,打印結果...

S 
Su 
Sug 
Suga 
Sugar 

另一種方法可能是使用複合環...

String word = "Sugar"; 
int length = word.length(); 
for (int number = 0; number < length; number++) { 
    for (int inner = 0; inner < number; inner++) { 
     System.out.print(word.charAt(inner)); 
    } 
    System.out.println(""); 
} 

外部(第一個)循環控制要打印的字符數,內部(第二個)循環物理打印每個字符從開始到要打印的字符數...(nb:這將打印一個前導空白區,所以你可能需要一個if在那裏控制,如果它很重要)

+0

@AlexK因爲OP可能不被允許使用'subString',因爲它不會在循環內創建臨時對象,使其更有效率,因爲有多種方式來蒙皮這隻貓... – MadProgrammer

+0

Gotcha。我只是想知道......並不意味着只有一種方法可以做到! –

+0

如果'substring()'不被允許,第二個選項是最清晰的解決方案。 +1 – gaborsch

4

我會建議使用String.substring(int startIndex, int endIndex)

對你來說,你的程序應該是這樣的:

String s = "Sugar"; 
for(int i = 0; i < s.length() - 1; i++) { 
    System.out.println(s.substring(0,i)); 
} 

記住了startIndex是包容的,endIndex的是排他性的。所以"Sugar".substring(0,3)會給「Sug」。

+1

@MadProgrammer'substring()'比StringBuilder更有效率,因爲它正在重用源字符串中原始的'char []'。 'sb.toString()'無論如何創建一個新的String對象... – gaborsch

+0

但是'subString'它仍然在每個循環的'char'數組中創建一個新的'String' ... – MadProgrammer

+0

(我想通過使用String + String來演示'String'串聯的方式,這真的很糟糕) – MadProgrammer