Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串生成器替换字符串中偶数索引处的元素_Java_String_Stringbuilder - Fatal编程技术网

Java 字符串生成器替换字符串中偶数索引处的元素

Java 字符串生成器替换字符串中偶数索引处的元素,java,string,stringbuilder,Java,String,Stringbuilder,我试图用ASCII值替换字符串中的偶数。我正在使用StringBuilder替换方法,从每次迭代的索引开始,以相同的索引结束,然后用ASCII值替换该值。出于某种原因,replace方法没有将索引处的元素替换为ASCII值 sb是我的StringBuilder,握着字符串结果是我想要的返回字符串 for(int i=0;i

我试图用ASCII值替换字符串中的偶数。我正在使用StringBuilder替换方法,从每次迭代的索引开始,以相同的索引结束,然后用ASCII值替换该值。出于某种原因,replace方法没有将索引处的元素替换为ASCII值

sb
是我的StringBuilder,握着字符串<代码>结果是我想要的返回字符串

for(int i=0;i
有些事情我会纠正,但@Nikolai Dmitriev已经指出了其中的一些

  • n
    是需要的,尽管@Nikolai Dmitriev说不需要。因为您想用它的ASCII值替换它。但是,您可以将其缩短为
    stringa=String.valueOf((int)c)c
    ,直接使用'stringa=String.valueOf((int)sb.charAt(i))
  • 您正在使用sb.replace(char start、char end、String str)而函数应接受sb.replace(int start、int end、String str)。要纠正这一点,只需使用sb.replace(i,i+1,a)。请注意,您使用的是
    end=i+1
    ,因为StringBuilder替换函数的结束值是独占的(不包括)
  • 最后初始化
    结果
    。如果在for循环中执行该操作,则该变量的作用域在for循环中,并且由于要返回该变量,因此在替换完所有偶数索引后,需要对其进行初始化

  • 将replace语句更改为(i+1,i+1,a)时,字符串输出中没有任何更改。。。另一方面,当我将语句改为(i,i+1,a)时,结果是字符串中的每个元素都发生了变化,而不是偶数。经过更多测试后,上面列出的修复仍然会产生错误的结果。当replace语句设置为(i,i+1,a)时,字符串中的每个元素都将被替换,而不是偶数元素。您必须使用
    if(i%2==0)
    检查它是否为偶数索引,然后在该if语句中执行操作。:)我通过两种方式实现了这一点,一种是将循环迭代次数增加2(I=I+2),另一种是加入刚才提到的if条件。仍然会产生整个字符串被更改的相同结果,而不是偶数元素:/OK,我想我知道为什么会发生这种情况。第一个字母被更改,现在第二个字母将位于索引2,因为ascii值的长度为2。尝试使用字符串作为引用,首先使用空的stringbuilder。循环遍历字符串,而不是stringbuilder,如果索引为奇数,则将字符串的字符添加到stringbuilder,否则添加原来的ascii值!谢谢你的帮助!!因为额外的数字而推动索引的想法甚至没有在我脑海中出现lol:)