我遇到了一个问题,目前我被困住了。基本上我想要做的是我想要一个变量数组,将其覆盖,将其写入另一个变量,然后再次覆盖初始变量,再将其保存为另一个变量并比较两个保存的变量
请记住以下代码:
int[] Item1 = {1,1}
int[] SavedItem1;
int[] SavedItem2;
Program1();
SavedItem1 = Item1;
Program2();
SavedItem2 = Item1;
player.sm("The value is: " + SavedItem1[0] + " and " + SavedItem2[0] + ".");
public static void Program1() { Item1 = {2,2,2,2,2};}
public static void Program2() { Item1 = {3,4,4,5,5};}
但是返回游戏名称的是:值为1和1,显然它不会覆盖程序中的值,我不明白为什么不能和我不知道如何解决这个问题,会是什么做我想做的事的正确方法是什么? (正确的输出是:值为2和3.)
谢谢大家
-Antoine
答案 0 :(得分:0)
我认为这就是你想要的:来自 - Javadoc
设置公共E集(int index,E element)
用此替换此列表中指定位置的元素 指定的元素。
指定者:在接口列表中设置
覆盖:在类AbstractList
中设置参数:index - 要替换元素的元素的索引 - 元素 存储在指定位置
返回:先前在指定位置的元素抛出: IndexOutOfBoundsException - 如果索引超出范围(索引< 0 || index> = size())
所以你可以简单地覆盖特定位置的值......
答案 1 :(得分:0)
将数组分配给另一个数组时,它们都指向相同的array。因此在你的代码中,SavedItem1和SavedItem2基本相同,它指向数组Item1的第一个元素。
而public static void Program1() { Item1 = {2,2,2,2,2};}
,这里的Item1在a中
不同的范围。因此,对它的更改不会影响main方法中的Item1。
要实现您要执行的操作,请返回新数组并将其分配给Item1。
public static int[] Program1() { return new int [] {2,2,2,2,2};
同样适用于Program2。或者重写Item1变量使其适当地限定范围(即,在Main和方法Program1和Program2上方)