我正在尝试编写一个接口方法,该方法接受不同对象的数组,并根据对象的getMeasure()方法的返回交换两个数组元素。
我的问题是,当它是一个对象时,如何交换两个数组元素,或者当您不知道对象必须是什么时,如何存储临时对象的值。
到目前为止,我的代码如下:
public static void swapMinAndMax(Measurable[] objects)
{
double largest = 0;
int lgIndex = 0;
int smIndex = 0;
for(int i = 1; i < objects.length; i++)
{
if(objects[i].getMeasure() > largest){
largest = objects[i].getMeasure();
lgIndex = i;
}
}
for(int i = 0; i < objects.length; i++)
{
if(objects[i].getMeasure() < largest){
largest = objects[i].getMeasure();
smIndex = i;
}
}
//need to swap objects[lgIndex] with objects[smIndex]
}发布于 2016-03-24 22:02:03
您可以使用Measurable变量进行交换。
Measurable measurable = objects[lgIndex];
objects[lgIndex] = objects[smIndex];
objects[smIndex] = measurable;发布于 2016-03-24 22:02:33
你一定知道这个对象是什么,它是一个Measurable。因此:
//need to swap objects[lgIndex] with objects[smIndex]
Measurable temp = objects[smIndex];
objects[smIndex] = objects[lgIndex];
objects[lgIndex] = temp;发布于 2016-03-24 22:04:44
首先,将您的smallest与largest (这不是您想要的)进行比较,您可以通过一个循环找到最小和最大的。最后,swap存储一个带有临时引用的值;然后将另一个值替换为未存储的值,最后将未修改的位置设置为临时位置。像这样,
public static void swapMinAndMax(Measurable[] objects) {
int lgIndex = 0;
int smIndex = 0;
for (int i = 1; i < objects.length; i++) {
if (objects[i].getMeasure() > objects[lgIndex].getMeasure()) {
lgIndex = i;
}
if (objects[i].getMeasure() < objects[smIndex].getMeasure()) {
smIndex = i;
}
}
if (lgIndex != smIndex) {
Measure t = objects[lgIndex];
objects[lgIndex] = objects[smIndex];
objects[smIndex] = t;
}
}https://stackoverflow.com/questions/36201928
复制相似问题