格式化字符串方法

时间:2015-02-27 22:11:56

标签: java

我正在尝试创建一个方法,使用由'x'和' - '字符组成的模式来格式化用户的字符串,该模式也来自用户。

例如,

如果用户输入abcdefg,并且模式为x-x-x-x-x-x-x, 输出应为a-b-c-d-e-f-g

当用户提供的字符长度总是给我一个错误的字符串时,我的问题出现了。 提前谢谢。

这就是我得到的。

private static void FormatString() 
    {



        String str,pattern= "";
        int p=0;
        Scanner in1 = new Scanner(System.in);
        Scanner in2 = new Scanner(System.in);

        System.out.println("Enter a String to be formatted");
        str = in1.nextLine();


        System.out.println("Enter pattern");
        pattern = in2.nextLine();
        char [] array1 = pattern.toCharArray();


        int ultindx = str.lastIndexOf(str);

        int ultindx2 = pattern.lastIndexOf(pattern);
        int lenght = pattern.length();
        for(int y = 0; y < lenght; y++)
        {

            if(array1[y] == 'x' )
            {
            array1[y] = str.charAt(p);
            p++;
            }

            else 
                array1[y] = '-';



        }

        System.out.println(array1);
        formattry++;
    }

2 个答案:

答案 0 :(得分:0)

您必须检查p<str.length()。如果你不这样做,你会得到一个StringIndexOutOfBoundsException

答案 1 :(得分:0)

我认为问题出在以下几行:

array1[y] = str.charAt(p);

当模式比字符串长时,p值大于字符串的长度。

您应该添加其他条件

if(array1[y] == 'x' && p < str.length())
{
   array1[y] = str.charAt(p);
   p++;
}