所以我想把这个叫做navn的String,并把它变成一个char数组。然后我想通过它并用大写A代替小的“a”。所以它应该打印E S ... l A ...(大A)。
但我无法让它正常工作。任何帮助都会很棒!
private String navn = "Espen Askeladd";
public void metode4() {
char[] navnBlirCharArray = navn.toCharArray();
for (char output : navnBlirCharArray) {
if(navnBlirCharArray.equals('a')) {
navnBlirCharArray[output] = 'A';
}
System.out.println(output);
}
}
答案 0 :(得分:1)
你太复杂了!在你的字符串上使用replace()。
String navn = "Espen Askeladd";
navn = navn.replace('a', 'A');
System.out.println(navn);
检查javadoc。
答案 1 :(得分:1)
您正在使用快速枚举中的char[]
个实例为char
编制索引,该实例会被设置为int
,并且如果{ArrayIndexOutOfBoundsException
,则很可能会抛出int
1}} char
的值为> navnBlirCharArray.length
(这是因为它不是您想要的索引)。
请参阅此处的示例以了解正在发生的事情:
String[] foo = {"foo", "bar"};
char c = 1; // valid
System.out.println(foo[c]); // valid too
<强>输出强>
bar
使用String.replace
替换char
中的String
或String
,以及String.replaceAll
替换为正则表达式。
例如
String replacement = input.replace('a', 'A');
or...
String replacement = input.replace("a", "A");
最后,如果您需要整个String
大写/小写,请使用String.toUpperCase
或String.toLowerCase
。
答案 2 :(得分:1)
for-each构造循环遍历数组的元素值,将每个元素放在命名变量中(在本例中为output
)。当你需要修改数组时它是不合适的,因为你需要知道数组中元素的索引,所以你应该使用传统的for循环:
for (int i = 0; i < navnBlirCharArray.length; i++) {
if (navnBlirCharArray[i] == 'a') {
navnBlirCharArray[i] = 'A';
}
}
System.out.println(new String(navnBlirCharArray));
我认为这只是一个学习练习,否则你可以使用内置的字符串replace
方法做得更简单:System.out.println(navn.replace('a', 'A'));
答案 3 :(得分:0)
您忘记输出是char而不是int
。
因此您必须使用int counter = 0;
,然后在每次迭代时将其递增为:
private String navn = "Espen Askeladd";
public void metode4() {
int counter = 0 ;
char[] navnBlirCharArray = navn.toCharArray();
for (char output : navnBlirCharArray) {
if(output.equals('a')) { //not navnBlirCharArray
navnBlirCharArray[counter] = 'A'; //not output(which is character)
}
System.out.println(navnBlirCharArray[counter]); //not output (since you have not changed its value)
counter++;
}
}
<小时/> 修改: 而且你必须使用print(如果你想要输出单行而不是多行