我目前有一个作业,我们将整个(瑞典语)字母表用小写字母作为字符串,我们应该将每个其他字符转换为大写字母。这就是我现在所处的位置:
public static void main(String[] args) {
String alphabet = "abcdefghijklmnopqrstuvwxyzåäö";
System.out.println(alphabet);
for (int i = 0; i < 29; i = i + 2) {
char result = alphabet.charAt(i);
alphabet.toUpperCase(result);
}
System.out.println(alphabet);
}
现在的问题是alphabet.toUpperCase(result);
给了我一个错误,我无法将char转换为语言环境。我该如何解决这个问题?
答案 0 :(得分:3)
如果你想获得char的大写,你应该使用Character.toUpperCase(c)
,而不是String的toUpperCase。
所以,我认为你可能正在寻找这样的东西:
public static void main(String[] args) {
String alphabet = "abcdefghijklmnopqrstuvwxyzåäö";
System.out.println(alphabet);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < alphabet.length(); i++) {
char c = alphabet.charAt(i);
sb.append(i % 2 == 0 ? Character.toUpperCase(c) : c);
}
String result = sb.toString();
System.out.println(result);
}
输出:
abcdefghijklmnopqrstuvwxyzåäö
AbCdEfGhIjKlMnOpQrStUvWxYzÅäÖ
由于Strings是不可变的,你必须创建一个新的String来获得你想要的东西。执行此操作的有效方法是使用StringBuilder。
修改强>
没有StringBuilder的另一种方法,也许更直观的方法是将String转换为chars数组,这使得它变得可变。最后,您只需将其转换回String。结果如下:
public static void main(String[] args) {
String alphabet = "abcdefghijklmnopqrstuvwxyzåäö";
System.out.println(alphabet);
char[] chars = alphabet.toCharArray();
for (int i = 0; i < alphabet.length(); i+=2) {
chars[i] = Character.toUpperCase(chars[i]);
}
String result = new String(chars);
System.out.println(result);
}