-1

我正在做一个包含几个单独部分的课堂作业,除了这个之外,我都完成了。我需要从用户那里获取字符串输入并创建一个循环(最好是 for 循环),在每个字符之间插入星号。我完全被这个难住了,所以如果有人能给我一些帮助来开始它,我将不胜感激。

到目前为止我已经想出了这个

    } else if (choice.equalsIgnoreCase("C")) {
        System.out.print("Enter text here: ");
        String orig = input.nextLine();

        // To use for asterisk insertion
        int x = 1;
        int y = 2;

        for (int length = orig.length(); length > 0;) {
            orig = orig.substring(0,x) + "*" + orig.substring(y);
            x = x + 2;
            y = y + 2;
        }

    } 

它编译得很好,但是当我测试它并输入一些文本时,它在线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:5

4

3 回答 3

0

试试这个程序在字符串的每个字符之间添加星号。

int leng;
Scanner sc= new Scanner(System.in);
System.out.println("enter the name");
String name=sc.nextLine();
leng=name.length();
char c[]=new char[leng];
for(int i=0;i<=leng-1;i++){
    c[i]=name.charAt(i);

    System.out.print(c[i]);
    if(i<leng-1)
        System.out.print("*");
}
于 2015-01-21T07:32:06.833 回答
0

您的 for 循环没有有效的终止子句。

for (int length = orig.length(); length > 0;)

将无限期运行,直到它导致异常。

    System.out.print("Enter text here: ");
    String orig = input.nextLine();

    for (int length = orig.length() - 1; length > 0; length--) {
        orig = orig.substring(0,length) + "*" + orig.substring(length);
    }

生产

Enter text here: TestOutput T*e*s*t*O*u*t*p*u*t

如果你想在最后一个 't' 后面加上 *,你可以通过删除 for 循环中的“- 1”轻松添加它。

于 2013-09-29T22:15:54.203 回答
0

除非必须,否则不要重用变量。它只会使代码更加复杂和难以阅读。

    String orig = "my test";
    StringBuilder result = new StringBuilder();

    for (int i = 0; i < orig.length() -1;i++) {
        result.append(orig.charAt(i));
        result.append('*');
    }
    result.append(orig.charAt(orig.length()-1));
于 2013-09-29T21:58:34.530 回答