我正在学习Java并练习使用在线练习。到目前为止,我只学习了方法,因此使用数组进行此练习超出了我的范围,即使在线的几个解决方案使用数组来完成我想要的操作。
练习是这样的:让用户输入带元音的字符串。只要有元音字母,就将元音显示为大写字母。
示例:如果用户输入" apples",正确的输出是ApplEs
到目前为止我有这个代码:
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
}
}
}
}
当我按原样运行我的代码时,输入字符串&#34; apples&#34;,例如,我得到&#34; aAppleEs&#34;作为我的输出。正在打印小写元音和大写元音。我想我应该用upperCaseVowel替换string.charAt(i)这是小写元音,但是我找不到任何替换()方法或类似的东西。我尝试过像StringBuilder等其他东西,但我还没有遇到过一个简单到足以避免数组的解决方案,因为我还没有学过它们。任何有关如何获得正确输出的帮助都非常感谢。谢谢!
答案 0 :(得分:2)
如果它是元音,你的错误是在测试前打印每个字符。
相反,在你弄清楚它应该是什么之后打印每个字符。你的循环体应该是:
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);
}
强制非元音为小写。
答案 1 :(得分:1)
您只需将Sysout
语句之前的if
移至else
,以避免两次打印相同的字符,例如:
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));
}
}
}
答案 2 :(得分:0)
试试这个,它对我有用。
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);
}
}