Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将所有非元音替换为'*';_Java - Fatal编程技术网

Java 将所有非元音替换为'*';

Java 将所有非元音替换为'*';,java,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

我想要一个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,'*')); 
   }
}
import java.util.*;
公开课Q3{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
串句;
char ch='x';//我给字母命名为ch。
System.out.print(“输入句子:”);
句子=in.nextLine();
int j=句子长度();

对于(int i=0;i首先,您应该在if语句中用
&&
替换
|
,因为正如JB Nizet所提到的,您现在拥有的
if
总是返回true。其次,replace函数替换所有出现的
ch
字符,并且您必须将其结果分配到某个位置

sentence = sentence.replace(ch,'*');

仔细阅读String.replace的javadoc。它是否修改了字符串?另外,
ch!=“e”| ch!=“a”
总是正确的:如果是a,那么
ch!=“e”
是正确的。如果是e,那么
ch!=“a”
是正确的。我必须补充一点,您的策略非常低效。为什么不使用StringBuilder来附加每个字符,或者替换字符呢原始字符串?您的代码对字符串进行多次传递,并创建大量副本。
语句.replace(ch,“*”);
如果不将结果分配到某个位置,则不会执行任何有用的操作。