如何解决Java-如何将字符char []中的相同字符转换为星号'*',前提是字符之间必须相同
char []标签=新的char [] {'b','a','a','a','z','a'};
char change;
for (int i=0; i<tab.length-1; i++) {
if (tab[i] == tab[i+1]) {
change = tab[i];
for (int j=0; j<tab.length; j++) {
if (tab[j] == change) {
tab[j] = '*';
}
}
}
}
我只想将角色更改为与自己相邻的星星 结果应该是b *** za
解决方法
每当您看到两个相同的连续字符,然后循环通过将它们设置为''a nd来设置最后一个重复字符,我们将带有prev标志;如果为true,则我们将重复字符设置为最后一个复制到“ ”
char[] tab = new char[] {'b','b','a','z','b'};
char change;
boolean prev=false;
for (int i=0; i<tab.length-1; i++)
{
prev=false;
while(i+1<tab.length && tab[i]==tab[i+1])
{
tab[i++]='*';
prev=true;
}
if(prev)
tab[i]='*';
}
System.out.println(Arrays.toString(tab));
预期输出:
[*,*,z,a,b,*]
,
您快到了。更改以下部分
for (int j=0; j<tab.length; j++) {
if (tab[j] == change) {
tab[j] = '*';
}
}
到
for (int j = i; j < tab.length && tab[j] == change; j++) {
tab[j] = '*';
}
完整代码:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
char[] tab = new char[] { 'b','a' };
char change;
for (int i = 0; i < tab.length - 1; i++) {
if (tab[i] == tab[i + 1]) {
change = tab[i];
// Start with index,i and replace each element with '*' till tab[j] == change
for (int j = i; j < tab.length && tab[j] == change; j++) {
tab[j] = '*';
}
}
}
System.out.println(Arrays.toString(tab));
}
}
输出:
[b,a]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。