JAVA char数组的最后一个元素未被替换

时间:2014-05-23 10:43:32

标签: java arrays replace char

在JAVA' char [] a' ,我想用' q'替换所有的字符,除了' x'和'。我通过下面的JAVA代码尝试了它。它工作但无法替换最后一个字符。我需要帮助来完成更换。

public static void main( String[] args )
{
       char[] a ={'x','y','z','x','y','r','b'};

       for(int i=0; i<a.length; i++){

        if ( a[i]=='x') {
                i=i+1;
            if ( a[i]=='y') {
                   i=i+1;
                   a[i]='q';
            } 
                System.out.println(a);
         }
    }
}

6 个答案:

答案 0 :(得分:3)

替换你的所有内容:

if ( a[i] != 'x' && a[i] != 'y' ){ a[i] = 'q'; }

答案 1 :(得分:1)

我不会检查您的代码,但我会告诉您如何实现目标。

  char[] a = {'x', 'y', 'z', 'x', 'y', 'r', 'b'};
  for (int i = 0; i < a.length; i++) {
    if (a[i] == 'x' || a[i] == 'y') {
      continue;
    } else {
      a[i] = 'q';
    }
  }
  System.out.println(a);

java中的关键字continue跳过实际迭代并转到下一个。

答案 2 :(得分:0)

您需要检查当前字符(索引i)是否不是xy。如果它是其中一个字符,则for循环继续照常并检查下一个字符。

for(int i = 0; i < a.length; i++){
   char c = a[i]; //get current char
   if(c != 'x' && c != 'y'){ //check if it is a x or y
      a[i] = 'q' //replace current char
   }
}

答案 3 :(得分:0)

循环中的代码只会将q替换为序列x, y之后的任何字符。替换除xy之外的所有字符的一种方法是将您的循环更改为:

for(int i=0; i<a.length; i++){

    if ( a[i]!='x' && a[i] != 'y') {
       a[i]='q';
    } 
}

System.out.println(a);

另请注意,您的System.out.println似乎位于错误的位置,并且不会输出任何有用的内容。

答案 4 :(得分:0)

正如Jens指出的那样,不要修改循环计数器。 Java并不关心这一点,但你可能会这样做。假设我们在第一次迭代中,那么:

    int i = 0;

    if ( a[i]=='x') { // i is still 0
            i=i+1;    // i becomes 1
        if ( a[i]=='y') { // OOPS, i is 1 here. so this is a[1] and therefore 'y'
               i=i+1;
               a[i]='q';
        } 
            System.out.println(a);
     }

for循环中,您可以使用continue;跳过循环的其余部分并跳转到下一次迭代。

请记住,for的退出条件只会评估一次:for块的开头。

答案 5 :(得分:0)

肯定不是:

if (a[i] == 'x'){i=i+1;
if (a[i] == 'y'){i=i+1;
a[i] = 'q';
}
System.out.println(a);
}

你可以这样做:

if (a[i] != 'x' || a[i] != 'y'){
   a[i] = q;
System.out.println(a);
}