计算最小值和最大值并删除它们

时间:2017-02-24 01:53:57

标签: java

因此,对于我的项目,这就是我需要做的事情在潜水运动中,七位评委会在0到10之间给出一个得分,其中每个得分可能是一个浮点值。抛出最高和最低分数,并将剩余分数加在一起。然后将总和乘以该潜水的难度。难度范围从1.2到4.8。然后将总数乘以0.6以确定潜水员的得分。

编写一个程序,提示用户提供难度和七个评委的分数,并输出该潜水的总分。该程序应使用数组来存储七个分数。该计划还应确保所有输入都在允许的数据范围内。

示例输出:

输入潜水难度(1.2 - 4.8):7.3

无效难度。请重新输入:1.5

输入每位法官的分数(0.0 - 10.0):

为法官1:12.3输入分数

得分无效。请重新输入:14.5

得分无效。请重新输入:8

为法官2:7.5输入分数

为法官3:8.5输入分数

为法官4:8输入分数

为法官5:7输入分数

为法官6:8输入分数

为法官7:7.5输入分数

潜水得分为35.1

我坚持的是如何获得一个能自动取出最小值和最大值的代码......

import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {


        Random rng = new Random();

        int[] values = new int[1000];
        // Fill it up
        for (int i = 0; i < values.length; i++) {
            values[i] = rng.nextInt(100);
        }

        // Find min
        /*int indexOfMin = 0;
        int indexOfMax = 0;
        for (int i = 0; i < values.length; i++) {
            if(values[i] < values[indexOfMin]) {
            indexOfMin = i;
            }
            if (values[i] > values[indexOfMax]) {
                indexOfMax = i;
            }
        }
        System.out.println("Minimum is at index " + indexOfMin + " with         value " + values[indexOfMin]);      
    System.out.println("Maximum is at index " + indexOfMax + " with value " + values[indexOfMax]);      
     */

    double[] difficulty = new double[1];
    Scanner keyboard = new Scanner(System.in);
    for (int d = 0; d < difficulty.length; d++) {
        System.out.println(" Enter Difficulty " + d + ":" );
        difficulty[d] = keyboard.nextDouble();

        while (difficulty[d] < 1.2 || difficulty[d] > 4.8) {
            System.out.println(" Bad value. Try again: ");;
            difficulty[d] = keyboard.nextDouble();
        }

        Scanner keyboard1 = new Scanner(System.in);
            double[] scores = new double[7];
            for (int i = 0; i < scores.length; i++) {
                System.out.println(" Enter score " + i + ":" );
                scores[i] = keyboard1.nextDouble();

                while (scores[i] < 0.0 || scores[i] > 10.0) {
                    System.out.println(" Bad value. Try again: ");;
                    scores[i] = keyboard1.nextDouble();


                }
            }
        }
    }
}

并且indecOfMin和indexOfMax是//代码之外的因为我认为我错了或者它没有应用/帮助这个项目

1 个答案:

答案 0 :(得分:0)

不是搜索最小值或最大值,而是可以对值数组进行排序,然后从数组的一端拉出最大值,从另一端拉开最小值。

对于排序,您可以使用冒泡排序:

public double[] bubbleSort(double[] array) {
    int numberOfItems = array.length;

    for (int pass=1; pass != numberOfItems; pass++) {
        for (int index=0; index != numberOfItems-pass; index++) {
            if (array[index] < array[index+1]) {
               temp = array[index];
               array[index] = array[index+1];
               array[index+1] = temp;
            }
        }
    }
    return array;
}

这会将数组从最小到最大排序,并将其返回。

然后你可以像这样从数组中拉出来:

int maxIndex = array.length - 1;
double max = array[maxIndex];
double min = array[0];

您可能需要进行一些小的更改才能将其实现到您自己的代码中。