2015-10-26 55 views
0

給定一個像「Code」這樣的非空字符串str,打印一個像「CCoCodCode」這樣的字符串。在字符串中的每個索引處,必須將字符串重新打印到該索引。如何重新打印從第一個字符開始到最後一個字符串?

我知道我寫這段代碼肯定有些問題,因爲答案應該是CCoCodCode,但是它會給我字母表!我不知道該如何改變它。

public static void main(String[] args) 
{ 
    Scanner scan = new Scanner(System.in); 

     String str = scan.next(); 
     int x = str.length(); 
     for(char i = str.charAt(0); i <= str.charAt(x-1); i++) 
     { 
      System.out.print(i); 
     } 
} 

回答

3

數據類型char可視爲數字;你可以增加它並把它作爲一個數字操作。

你真正想要的是連續打印str的子串。循環顯示int這將表示要打印的子字符串的結束位置。

for (int i = 0; i < str.length(); i++) 
{ 
    System.out.print(str.substring(0, i + 1)); 
} 

結束索引參數substring is exclusive,這就是爲什麼我添加1

+0

非常感謝你!你知道我可以怎樣更多地練習這些東西嗎?事實上它很簡單,我一直在複雜的問題。 – Kj45

1

比方說str"Code"。我們可以執行一些智力替換來查看你的循環發生了什麼。

  • str"Code"
  • x4
  • str.charAt(0)'C'
  • str.charAt(x-1)'e'

使這些替代,你的循環是:

for(char i = 'C'; i <= 'e'; i++) 
{ 
    System.out.print(i); 
} 

這是否幫助您看到問題?我想你必須從0一個循環來3,而不是從'C''e' ...

0

它輸出的字母,因爲你正在打印的計數器,而不是字符串中的字符!

就這樣,for循環的第一次迭代將我設置爲第一個字符,打印該操作,然後操作i++將使i增加1。等等,所以如果第一個字符是「C」,那麼i = 'C',什麼是i++

事實證明,字符可以用數字表示。例如,'C'的值爲67.因此遞增它使得它爲68,代表'D'。所以如果你在「代碼」上運行循環,它會增加你的計數器4次,給出「CDEF」。如果在「Codecodecode」上運行,則會使循環運行12次,並顯示「CDEFGHIJKLMN」。

你真正想要的其指數而不是通過字符串循環:

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    String str = scan.next(); 
    int length = str.length(); 
    for (int i = 0; i < length; i++) { 
     System.out.print(str.substring(0, i + 1)); 
    } 
} 
+0

哎呀!我的意思是反擊! –

0

許多方法來完成它,假設我們有從用戶存儲在一個名爲「C」字符串輸入.. 。 然後...

 String c = "Code"; 
     for (int i = 0; i < c.length(); i++) { 
      System.out.print(c.substring(0, i)); 
     } 
     System.out.print(c); 

這將打印出您正在查找的序列。

相關問題