System.out.print("Enter the message to encrypt: ");
message = s.next().toString(); // this message is inserted
List<String> strings = new ArrayList<String>();
int index = 0;
while (index < message.length())
{
strings.add(message.substring(index, Math.min(index + 2,
message.length())));
// separates the list by two's. i.e. [ST, EV, EN] for "Steven"
index += 2;
}
System.out.println(strings); // prints out list
break; // end of case
/*
我想对这段代码做什么是由X分开的重复字符,以便,例如,如果名称&#34;威廉&#34;插入后,它会插入[WI,LX,LI,AM]。此外,如果有一个奇数字母(即BOB),你可以用&#34; X&#34;填写最后一个数字。使它成为一对:[BO,BX]
我一直在搜索堆栈溢出,无法找到答案,所以非常感谢任何建议! * /
答案 0 :(得分:1)
这里while循环中的条件应该是
while (index+2 < message.length())
否则可能导致索引超出绑定异常。
答案 1 :(得分:0)
首先,您必须创建替换为“X”的字符串。 然后把它放在循环中
this.add_new_user(_data, _data.uid)
答案 2 :(得分:0)
你可以通过简单地检查子串是否由相同的字符组成,然后你可以取第一个字符并将其与'X'连接并将其添加到列表中并将索引增加1.除此之外,只需添加列表中的子字符串并将索引增加2.下面是我修改的while循环:
while (index < message.length())
{
//strings.add(message.substring(index, Math.min(index + 2, message.length())));
String str = message.substring(index, Math.min(index + 2,
message.length()));
// separates the list by two's. i.e. [ST, EV, EN] for "Steven"
if(str.length() == 1 || str.charAt(0) == str.charAt(1)) {
strings.add(str.charAt(0) + "X");
index += 1;
}
else{
strings.add(str);
index += 2;
}
}