/*
- 从键盘输入一个字符串给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:
这里的
b.length
是100,你这里其实将 b 后面为 null 的元素也打印了。如果非得这么做,应该将上面的 k 保存下来,在这个地方作为循环的上限问题2:
b 的大小为100够吗,如果 result 字符串大于100个字符呢?
问题3:
'\0'!=a[i]
,Java 里的数组和 C 中的数组是不一样的,字符串末尾并不是'\0'
结尾