我正在自己学习Java,并使用在线练习进行练习。到目前为止,我只学到了直到方法,所以在这个练习中使用数组超出了我的范围,即使一些在线解决方案使用数组来做我想做的事情。
练习是这样的:让用户输入一个带有元音的字符串。只要有元音字母,就将该元音显示为大写字母。
例如:如果用户输入“苹果”,正确的输出是苹果
到目前为止,我有这段代码:
import java.util.Scanner;
public class CapitalizeVowels {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a string ~ ");
String string = keyboard.nextLine();
for (int i = 0; i < string.length(); i++) {
System.out.print(string.charAt(i));
if (string.charAt(i) == 'a' ||
string.charAt(i) == 'e' ||
string.charAt(i) == 'i' ||
string.charAt(i) == 'o' ||
string.charAt(i) == 'u') {
char upperCaseVowel = Character.toUpperCase(string.charAt(i));
System.out.print(upperCaseVowel);
// need to replace string.charAt(i) with upperCaseVowel
// find something to replace characters
}
}
}
}
当我运行我的代码时,例如,输入字符串“苹果”,我得到“苹果”作为我的输出。小写元音和大写元音都被打印出来。我想我应该用大写元音替换string.charat(i),这是小写元音,但是我找不到任何替换()方法或类似的字符。我尝试了其他东西,如StringBuilder等。但是我还没有遇到一个足够简单的解决方案来避免数组,因为我还没有学习它们。非常感谢关于如何获得正确输出的任何帮助。谢谢!
试试这个,它对我有用。
class ReplaceVowel {
public static void main(String[] args) {
String words = "apples";
char converted = 0;
String w = null;
for (int i = 0; i < words.length(); i++) {
if (words.charAt(i) =='a'|| words.charAt(i)=='e'||words.charAt(i)=='i'||words.charAt(i)=='o'||words.charAt(i)=='u') {
converted = Character.toUpperCase(words.charAt(i));
w = words.replace(words.charAt(i), converted);
words = w;
} else {
converted = Character.toUpperCase(words.charAt(i));
w = words.replace(words.charAt(i), converted);
words = w;
}
}
System.out.println(words);
}
}
您只需要将if
语句之前的Sysout
移动到否则
,以避免两次打印相同的字符,例如:
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a string ~ ");
String string = keyboard.nextLine();
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) == 'a' || string.charAt(i) == 'e' || string.charAt(i) == 'i' || string.charAt(i) == 'o'
|| string.charAt(i) == 'u') {
char upperCaseVowel = Character.toUpperCase(string.charAt(i));
System.out.print(upperCaseVowel);
// need to replace string.charAt(i) with upperCaseVowel
// find something to replace characters
}else{
System.out.print(string.charAt(i));
}
}
}
你的错误是在测试元音之前打印每个字符。
相反,在弄清楚每个字符应该是什么之后打印它。循环的主体应该是:
char next = string.charAt(i);
if (next == 'a' ||
next == 'e' ||
next == 'i' ||
next == 'o' ||
next == 'u') {
next = Character.toUpperCase(next);
}
System.out.print(next);
您可以考虑添加:
else {
next = Character.toLowerCase(next);
}
强制非元音小写。
问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要
我有以下字符串输出: 但是我想在Java中有如下格式的输出 请帮帮我。 我正在将对象转换为json数据。请参见以下代码 我想将此应用于使用java 7的jsonString变量,就像不使用java 8一样
问题内容: 我想从字符串中删除方括号,但我不知道如何。 但是我的结果是:[克里斯曼| 1]方括号不会被删除。 我尝试使用其他正则表达式:, 但结果相同,方括号仍附加在字符串上。 编辑: 我试过了: 现在我得到: 问题答案: replaceAll方法正在尝试匹配尝试单独替换这些项目时不存在的String文字。
主要内容:replace() 方法,replaceFirst() 方法,replaceAll() 方法在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。repla
我正在尝试将所有数字单词0-9替换为字符串中相应的数字0-9。 我已经创建了数字单词和数字的两个数组,然后尝试使用替换循环来更改句子。 不确定我做错了什么。 我正在引用我的方法。 谢谢
问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。