用“ *”替换所有非元音的代码

时间:2019-10-26 09:01:34

标签: java

我想要一个提示用户输入句子的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*

2 个答案:

答案 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);  

    }

}