2015-10-26 20 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++; 
} 
相关问题