如果我有一个整数数组,我可以使用以下有效代码来切换元素1和5,并打印新数组: (假设在main方法中,整数数组是{1,2,3,4,5}。所以当调用下面的方法时,返回{5,2,3,4,1})
public static int[] SwitchEnds(int[] nums){
nums[0]=(nums[0]+nums[4])-(nums[4]=nums[0]);
return nums;
}
我可以为ArrayList做类似的事情吗?我尝试了以下代码(前一代码的精确副本,但使用与ArrayList相关的命令):
ArrayList<Integer> nums=new ArrayList<Integer>();
for (int i=1;i<=5;i++){nums.add(i);}
nums.get(0)=(nums.get(0)+nums.get(4))-(nums.get(4)=nums.get(0));
错误是第3行的左侧必须是变量。我理解这个错误,但我无法弄清楚如何纠正这个错误。
最后,我还可以为String数组做类似的事情吗?下面的代码说明了这个问题:
String[]a={"java","is","cool"};
a[0]=(a[0]+a[2])-(a[2]=a[0]);
return a;
(我想获得结果{&#34;很酷&#34;,&#34;是&#34;,&#34; java&#34;}) 谢谢!
答案 0 :(得分:1)
您可以使用Collections.swap方法
答案 1 :(得分:0)
因为它们是Integer
,所以你可以在数学上交换它们:
int diff = nums[0] - nums[nums.length-1];
nums[0] = nums[0] + diff;
nums[nums.length-1] = nums[nums.length-1] - diff;
答案 2 :(得分:0)
使用set
修改ArrayList
的值:
nums.set(0, (nums.get(0)+nums.get(4))-(nums.set(4,nums.get(0));
然而,这段代码很难理解,我怀疑这个(以及额外的算术)值得保存一个交换变量。
对于String
s,未定义-
运算符。但您可以使用substring
方法。但这会使它变得更加复杂。