2017-02-24 101 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