Java - 在用户输入的字符串之间添加星号

时间:2013-09-28 23:37:35

标签: java string loops for-loop input

我正在进行一个包含几个单独部分的课程作业,除了这个部分之外我都做过。我需要从用户那里获得一个字符串输入并创建一个循环(最好是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

1 个答案:

答案 0 :(得分:3)

你可以在字符串的字符上使用for循环(见下文),但我会这样做:

str = str.replaceAll("(?<=.)(?=.)", "*");

搜索参数中的正则表达式匹配任意两个字符之间的点,通过使用后视和前瞻来实现,每个字符都断言那里有一个字符。


如果必须使用循环,最简单的代码可能是:

String result = input.isEmpty() ? "" : input.substring(0, 1);
for (int i = 1; i < input.length(); i++)
    result += "*" + input.charAt(i);

稍微复杂的第一行迎合了用户输入空白的边缘情况。 for循环已经满足空白输入,因为空白的终止条件总是为false,所以它根本不会迭代。