我想写一个java程序,目的是删除一个输入的句子中的所有元音字母(aeiou),我写了以下的代码:
Scanner input=new Scanner(System.in);
str = input.next();
newstr=str.replaceAll("[aeiou]","");
System.out.println(newstr);
但是总是被空格键挡住,举个例子,输入“java is funny”,然后得出的结果是“jv”,但是我预期的效果应该是“jv s fnny”,保留住空格,而且还要继续删除空格键后面出现的元音字母,那我应该要怎么改代码?
还有个问题,当前后出现一样的字母时,只保留单个字母,举个例子,输入“nn”,得出结果“n”,我试了以下代码:
if(str.charAt(i)==str.charAt(i+1)){
newstr=str.repalce(str.charAt(i),"");}
但是不能运行,不知道问题出在哪,应该用什么方法?
请大家帮忙~
第一个问题我做了测试 并不会被空格挡住
第二个问题在于你没有理解String是不可变的
调用任何String的方法并不会改变String的字符串内容(除了=运算符)
因此不管循环几次 str 还是原来的 str
所有的替换都是在同一个str的基础上进行的
因此每次得到的newstr都是毫不相干的对象
而replace方法会替换所有的相同的char而不是替换一个
方法签名是String replace(char,char) 你连调用都错了
具体的做法是
str = "aabcdnnnn";
newstr ="";
int i = 0;
for (; i < str.length()-1; i++) {
if(str.charAt(i)!=str.charAt(i+1))
newstr+=str.charAt(i);
}
newstr+=str.charAt(i);
System.out.println(newstr);
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息