int A = 300;
int B = 400;
int C = 1000;
int D = 500;
int []abcd = {A,B,C,D};
Arrays.sort(abcd); // the sequence of array elements will be {300, 400, 500,1000}
Run Code Online (Sandbox Code Playgroud)
我想根据它们在排序后在数组中的位置来改变变量A,B,C,D的值.
例如,变量A位于索引0处,因此A的值变为1而不是300,变量B位于索引1处,因此B的值变为2而不是400,变量D位于索引2处,因此D的值变为3而不是500,变量C位于索引3,因此C的值变为4而不是1000,
变量的最终值为:A = 1; B = 2; C = 4; D = 3;
一个天真的方法是遍历数组的每个元素,随时检查值:
for (int i = 0; i < abcd.length; i++)
{
if (abcd[i] == A)
{
A = i+1;
}
}
// Rinse and repeat for B, C, D
Run Code Online (Sandbox Code Playgroud)
当然,如果采用这种方法,将其转换为接受数组的函数,要搜索的值,并在数组中返回其索引.
我认为你误解了原语数组的工作方式.当您创建数组int [] abcd = {A,B,C,D}时,它不包含变量A,B,C和D,它应包含其值的副本.
因此,当您对它们进行排序时,实际上对A,B,C或D没有任何影响.
实现与您尝试做的事情接近的一种方法是使用有序映射,其中每个值将映射到值持有者,然后您可以迭代键(按排序顺序)并分配序列号每个价值持有人.
如果您澄清更多关于您真正想做的事情,可能更容易提供帮助.