字符串删减特定的字符,oj显示答案错误。我没有检查出来,大家帮忙看一下?

新手上路,请多包涵

/*

  • 从键盘输入一个字符串给str和一个字符给c,
  • 删除str中的所有字符c并输出删除后的字符串str。

输入
定义一个字符串
第一行是一个字符串; 第二行是一个字符。
//定义一个字符串s,一个字符c,输入,

  • 将一个字符串付给一个数组a[],在定义一个数组b[],还有i=0,k=0
  • while(i<a.)
  • {
  • if (a[i]!=c)
  • {
  • b[k]=a[i];
  • k++;
  • }
  • i++;
  • }
  • b[k+1]='0';

输出
删除指定字符后的字符串。

样例输入 Copy
sdf$$$sdf$$
$

样例输出 Copy
sdfsdf
*/
import java.util.*;
public class Main {

public static void main(String[] args) {
    // TODO Auto-generated method stub

Scanner zdh =new Scanner (System.in);

String s;
char a[],b[],c;
a=new char[100];b=new char[100];
 int i=0,k=0;
 s=zdh.next();
 c=zdh.next().charAt(0);
 a=s.toCharArray();

 while(i<a.length)
     //  while('\0'!=a[i])这句话跑的话显示字符串下标溢出,可是我没有看出哪里的问题哦
 {
     if(a[i]!=c)
     {
         b[k]=a[i];
         k++;
     }
     
     i++;
     if(i>=a.length)
         break;
 }
 for(k=0;k<b.length;k++)
 {
     System.out.print(b[k]);
 }
}

}

阅读 1.8k
1 个回答

问题1:

b=new char[100]
for(k=0;k<b.length;k++)
 {
     System.out.print(b[k]);
 }

这里的b.length是100,你这里其实将 b 后面为 null 的元素也打印了。如果非得这么做,应该将上面的 k 保存下来,在这个地方作为循环的上限

问题2:
b 的大小为100够吗,如果 result 字符串大于100个字符呢?

问题3:
'\0'!=a[i],Java 里的数组和 C 中的数组是不一样的,字符串末尾并不是'\0'结尾

推荐问题