我想要将值8的所有三个整数替换为7.但输出只给我一个七......
public class hore {
public static void main(String[] args) {
int[] list = {8, 9, 8, 6, 9, 8};
int number = count(list, 8, 7);
System.out.print(number);
}
public static int count(int[] list, int target, int replacement) {
for (int n : list) {
if (n == target) {
n = replacement;
}
}
return replacement;
}
}
答案 0 :(得分:4)
做的时候
n = replacement;
您只是更改了局部变量n
的值,而不是列表中的值。
而且你没有计算你改变的价值。
你可以这样做:
int nbChanges = 0;
for (int i=0; i<list.length; i++) {
if (list[i]==target) {
list[i] = replacement;
nbChanges++;
}
}
return nbChanges;
答案 1 :(得分:2)
您要返回值为replacement
的变量7
。
您可以使用此代码获取8's
的数量: -
public static int count(int[] list, int target, int replacement) {
int count = 0;
for (int i = 0; i < list.length; list++) {
if (list[i] == target) {
count++;
list[i] = replacement;
}
}
return count;
}
答案 2 :(得分:1)
count
函数末尾的陈述是
return replacement;
这是你在这里传递的第三个参数:
int number = count(list, 8, 7);
由于count
函数未更改replacement
的值,number
的值将为7
答案 3 :(得分:1)
您还可以使用Collections框架并使用replaceAll函数。您必须使用列表而不是数组。
replaceAll方法与count count方法具有类似的签名。
如果可以的话,最好使用API,因为这将被尝试和测试。
答案 4 :(得分:0)
问题是你只是改变了局部变量的值, 你需要在你传递的数组中改变它。
你可以做::
for (int n=0;n<list.length();n++)
{
if (list[n] == target)
{
list[n] = replacement;
}
}