我正在尝试创建一个方法,使用由'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++;
}
答案 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++;
}