我想要一个提示用户输入句子的Java程序,然后用字符“ *”替换句子中的所有辅音(非元音)。
并且我一直在尝试仅使用for和if嵌套嵌套来解决它,而我的代码的最终版本是
import java.util.*;
public class Q3{
public static void main (String [] args){
Scanner in = new Scanner (System.in);
String sentence;
char ch='x'; // I named the letters ch.
System.out.print("Enter a sentence: ");
sentence=in.nextLine();
int j = sentence.length();
for(int i =0;i<j;i++)
{
ch=sentence.charAt(i);
if (ch!='e' || ch!='a' || ch!='i' || ch!='u' || ch!='o' || ch!='E' || ch!='A' || ch!='I' || ch!='U' || ch!='O')
{
sentence.replace(ch,'*');
continue;
}
}
System.out.println(sentence.replace(ch,'*'));
}
}
但是问题是当我键入lama
时输出为l*m*
当我输入The Java Programming language is fun
时,输出为The Java Programmi*g la*guage is fu*
答案 0 :(得分:1)
首先,您应该在if语句中将||
替换为&&
,因为正如JB Nizet所述,您现在拥有的if
总是返回true。其次, replace函数,替换所有出现的ch
char,并且必须将其结果分配到某个地方。
sentence = sentence.replace(ch,'*');
答案 1 :(得分:-1)
这是一种将所有非元音都替换为*
的工作方法import java.util.Scanner;
class Main
{
public static void main(String[ ] arg)
{
String s;
char ch;
int i=0;
Scanner sc=new Scanner(System.in);
System.out.print("Enter a string : ");
s=sc.nextLine();
String newWord = null;
//Run till the end of characers
for(int j=0;j<s.length();j++)
{
ch=s.charAt(j);
if (ch!='e' && ch!='a' && ch!='i' && ch!='u' && ch!='o' && ch!='E' && ch!='A' && ch!='I' &&
ch!='U' && ch!='O')
{
s = s.replace(ch, '*');
continue;
}
}
System.out.println(s);
}
}