繁体   English   中英

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

[英]Java - Adding Asterisks between a user inputted string

我正在做一个包含几个单独部分的课堂作业,除这一部分外,我都完成了所有工作。 我需要从用户那里获取字符串输入,并创建一个在每个字符之间插入星号的循环(最好是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

您可以在字符串的字符上使用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,因此根本不会进行迭代。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM