现在我有一个处理分数的项目。需要对馏分进行分类,降低最高和最低,然后将中间馏分加在一起。我已经创建了数组,并完成了排序。我被困在如何降低最高和最低。感谢任何帮助,谢谢!
public class Tester {
public static void main(String[] args) {
double[] fractions = {(6/7),(2/4),(3/4),(3/18),(1/8),(10/20),(2/6)};
}
public static void selectionSort (int... arr)
{
int i = 0, j = 0, smallest = 0;
int temp = 0;
for (i = 0;i<arr.length - 1;i++)
{
smallest = i;
for (j = 1; j<arr.length - 1; j++)
{
if (arr[j]<arr[smallest])
smallest = j;
}
temp = arr[smallest];
arr[smallest] = arr[i];
arr[i] = temp;
}
//Drop highest and lowest here
}
}
答案 0 :(得分:1)
首先,您必须在数组初始化中的分母或分子中添加小数点,以获得一个未满0
的数组(这样您就不会进行整数运算) 。或者只是在整数数学(d
)的末尾添加6/7d
。
接下来,您可以使用Arrays.sort
进行排序(或继续使用自定义排序方法),然后使用Arrays.copyOfRange
获取子数组。这非常方便,因为你可以给它一个起始索引和一个结束索引。这样的事情可以解决问题:
public static void main(String[] args) {
double[] fractions = {(6./7),(2./4),(3./4),(3./18),(1./8),(10./20),(2./6)}; //Add decimal points
Arrays.sort(fractions); //Sort your array
double[] removeLowestAndHighest = Arrays.copyOfRange(fractions, 1, fractions.length-1); //returns new array with first and last element removed.
}
答案 1 :(得分:0)
我建议使用List,然后你可以简单地使用.remove(0),. remove(size-1)
答案 2 :(得分:0)
// Create a new array that is 2 smaller than the orriginal.
int[] newArr = new int[arr.length-2];
// Iterate through the old array, skipping the first and last elements.
for(int i = 0; i < newArr.length; i++)
{
newArr[i] = arr[i+1];
}
答案 3 :(得分:0)
您可以将数组转换为列表以删除最小值/最大值,然后在必要时转换回数组
您可以使用Arrays.asList(array)进行转换
http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
集合有一个min和max方法,您可以在列表中使用它来确定需要删除的内容
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html