2015-10-26 54 views
1

我的輸出有問題:它總是在沒有假設的情況下在最後加上一個額外的星號。示例:編寫一個程序,讀出你的名字,並用星號分隔每個字母

m*i*c*h*a*e*l* 

當是假設沒有星號l或最後一個字符之後。任何人都可以幫我解決這個問題嗎?這是我到目前爲止的代碼:

import java.util.Scanner; 

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

     System.out.println("Please enter your first name in all  lowercase: "); 
     String name = keyboard.next(); 
     int n = 0; 
     String star = "*"; 

     while (n < name.length()) 
     { 
      System.out.print(name.charAt(n) + star); 
      n++; 
     } 
    } 
} 

我的老師告訴我,我們可能都與ASCII字符集,這我不知道的東西的想法。

+1

你明白爲什麼會發生這種情況嗎?你有關於如何阻止最後一個'*'出現的想法嗎?你可以弄明白這一點! –

+0

您希望爲該最後一顆明星添加特殊情況,以便只在當前角色**不是最後一個角色時連接/追加該角色,或者在添加完所有星星後刪除最後一顆星星。 – nem035

+0

在循環中爲每個字符添加一個'*'。事情是你不應該與最後一個字符。因此,您需要相應地修改您的循環 – trungdinhtrong

回答

0

那麼當你打印最後一個字符時,你要在它的末尾添加一個星號......這就是爲什麼最後添加了一個星號。

試試這個:

while (n < name.length() - 1) 
     { 
      System.out.print(name.charAt(n) + star); 
      n++; 
     } 
    System.out.print(name.charAt(n)); 
+0

謝謝。我有點迷路,因爲我遲到了兩週才進入這門課。 –

+0

建議:當我上大學的時候,我和你走的路一樣(稍晚到幾節課)。如果你現在沒有花時間趕上,你真的會落後。認真度過一個週末,甚至整整一個星期,坐下來,強迫自己去瀏覽所有的材料並編寫所有的例子。不要這樣做的等級,這種材料會讓你在世界上最好的工作,最好的工資,最好的工作生活,最靈活的,最好的一切。相信我這一點,你不想落後於基礎。 – Lencalot

0

有許多方法。一個簡單的方法是檢查邊界條件以查看星形是否應該打印,例如,

while (n < name.length()) 
{ 
    if (n != 0) System.out.print(star); 
    System.out.print(name.charAt(n)); 
    n++; 
} 
相關問題