2017-02-24 97 views
0

因此对于我的项目,这是我需要做的事情在潜水运动中,七位评委会评分介于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是//在代码之外,因为我认为我错了或它不适用/帮助这个项目

+0

为什么不检查代码是否正确?从看这个逻辑我看不出有什么问题。 –

+0

,因为它不涉及到问题。它不是正确的代码。它只是吐出一些与用户输入无关的随机数字 –

+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]; 

你可能不得不做出一些细微的变化落实到自己的代码。

+0

我不知道该怎么做,虽然 –

+0

我调整了你的答案 – Dungeonmasterbob