用@符号替换字符串的辅音
Replace consonants of a String with @ symbol
问题是将给定字符串中的所有辅音转换为 @ 此处我使用了字符串生成器来获取输入,但是在转换时字符串中的所有字符都转换为 @ 为什么请帮忙?
import java.util.Scanner;
public class Sample
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder str2= new StringBuilder(sc.nextLine());
for(int i=0;i<str2.length();i++)
{
if(str2.charAt(i)!='a'||str2.charAt(i)!='e'||str2.charAt(i)!='i'||str2.charAt(i)!='o'||str2.charAt(i)!='u'||str2.charAt(i)!='A'||str2.charAt(i)!='E'||str2.charAt(i)!='I'||str2.charAt(i)!='O'||str2.charAt(i)!='U'||str2.charAt(i)!=' ')
{
str2.setCharAt(i,'@');
}
}
System.out.println(str2);
}
}
示例输入 - aacaaaa
预期输出 - aa@aaaa
上述程序的输出 - @@@@@@@
你应该使用 && 而不是 ||
if (str2.charAt(i) != 'a' && str2.charAt(i) != 'e' && str2.charAt(i) != 'i' && str2.charAt(i) != 'o' && str2.charAt(i) != 'u' && str2.charAt(i) != 'A' && str2.charAt(i) != 'E' && str2.charAt(i) != 'I' && str2.charAt(i) != 'O' && str2.charAt(i) != 'U' && str2.charAt(i) != ' ') {
}
您应该使用 &&
而不是 ||
。但我认为更好的实现方式如下
import java.util.Scanner;
public class Sample
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder str2= new StringBuilder(sc.nextLine());
String vowels = "aeiouAEIOU";
for(int i=0;i<str2.length();i++)
{
if(vowels.indexOf(str2.charAt(i)) == -1 || str2.charAt(i) == ' ')
{
str2.setCharAt(i,'@');
}
}
System.out.println(str2);
}
}
试试这个,将所有元音字母放入一个列表中可以使您的代码更易于阅读。
import java.util.Arrays;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the string to check");
String checkString = in.nextLine();
StringBuilder builder = new StringBuilder();
String[] vowels = new String[] { "a", "e", "i", "o", "u" };
if (checkString != ""){
String[] check = checkString.split("");
for (String c : check){
if (!Arrays.asList(vowels).contains(c.toLowerCase()) || c.equals(" ")){
builder.append("@");
} else {
builder.append(c);
}
}
}
System.out.println(builder);
}
}
问题是将给定字符串中的所有辅音转换为 @ 此处我使用了字符串生成器来获取输入,但是在转换时字符串中的所有字符都转换为 @ 为什么请帮忙?
import java.util.Scanner;
public class Sample
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder str2= new StringBuilder(sc.nextLine());
for(int i=0;i<str2.length();i++)
{
if(str2.charAt(i)!='a'||str2.charAt(i)!='e'||str2.charAt(i)!='i'||str2.charAt(i)!='o'||str2.charAt(i)!='u'||str2.charAt(i)!='A'||str2.charAt(i)!='E'||str2.charAt(i)!='I'||str2.charAt(i)!='O'||str2.charAt(i)!='U'||str2.charAt(i)!=' ')
{
str2.setCharAt(i,'@');
}
}
System.out.println(str2);
}
}
示例输入 - aacaaaa 预期输出 - aa@aaaa
上述程序的输出 - @@@@@@@
你应该使用 && 而不是 ||
if (str2.charAt(i) != 'a' && str2.charAt(i) != 'e' && str2.charAt(i) != 'i' && str2.charAt(i) != 'o' && str2.charAt(i) != 'u' && str2.charAt(i) != 'A' && str2.charAt(i) != 'E' && str2.charAt(i) != 'I' && str2.charAt(i) != 'O' && str2.charAt(i) != 'U' && str2.charAt(i) != ' ') {
}
您应该使用 &&
而不是 ||
。但我认为更好的实现方式如下
import java.util.Scanner;
public class Sample
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder str2= new StringBuilder(sc.nextLine());
String vowels = "aeiouAEIOU";
for(int i=0;i<str2.length();i++)
{
if(vowels.indexOf(str2.charAt(i)) == -1 || str2.charAt(i) == ' ')
{
str2.setCharAt(i,'@');
}
}
System.out.println(str2);
}
}
试试这个,将所有元音字母放入一个列表中可以使您的代码更易于阅读。
import java.util.Arrays;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the string to check");
String checkString = in.nextLine();
StringBuilder builder = new StringBuilder();
String[] vowels = new String[] { "a", "e", "i", "o", "u" };
if (checkString != ""){
String[] check = checkString.split("");
for (String c : check){
if (!Arrays.asList(vowels).contains(c.toLowerCase()) || c.equals(" ")){
builder.append("@");
} else {
builder.append(c);
}
}
}
System.out.println(builder);
}
}