抱歉标题有点模糊,希望我在这里能让我的问题更清楚。
我有一个二维的List<List<Double>> myList
,每个子列表包含两个项:一个明确的double
,例如2.0
,和一个double
变量。基本上我想要做的是,不再将某些常量值存储在列表中,而是将其存储为对变量的引用,因为变量将在程序的其他部分更改,列表应该反映出这一点。这是我想要做的非常简化版本:
import java.util.Arrays;
import java.util.List;
public class Example {
static double apples = 10.0;
static double oranges = 5.0;
static List<List<Double>> myList = Arrays.asList((Arrays.asList(2.0, apples)), (Arrays.asList(2.0, oranges)));
public static void main(String[] args) {
apples += 3;
oranges += 3;
for (List<Double> list : myList) {
// list.get(1) -= list.get(0);
System.out.println(list.get(1) - list.get(0));
}
}
}
程序的输出如下:
8.0
3.0
然而,应该是这样的:
11.0
6.0
由于 apples
和 oranges
都增加了3。此外,请注意被注释的行 list.get(1) -= list.get(0);
。我最终想要做的是将由 list.get(1)
指定的变量减去由 list.get(0)
指定的数量。然而,当我取消此行的注释时,会出现以下情况:
Error:(20, 25) java: unexpected type
required: variable
found: value
我认为这两个问题都是由于“apple”和“orange”的值被存储在列表中作为常量值,而不是对变量本身的引用所导致的。这是因为我使用了“Arrays.asList()”来创建“myList”吗?还是因为我在定义“List >”时出现了问题?或者完全是其他问题?
谢谢您的任何帮助。
apples
或oranges
,而是只有像"apples"
这样的字符串,并制作一个相应地更改变量的方法。 - Anish Shanbhagapples
有两个不同的副本。您不能在同一语句中同时更新它们。 - Dawood ibn KareemDouble
(Double
本身是不可变的)。 - user3458