2017-02-24 7 views
0

これは私が行う必要があることです。ダイビングのスポーツでは、7人の裁判官が0から10までのスコアを与えます。各スコアは浮動小数点値です。最も高いスコアと最も低いスコアが投げられ、残りのスコアは一緒に加算されます。その合計に、その潜水の難易度が乗算されます。難易度は1.2から4.8ポイントの範囲です。合計に0.6を掛けてダイバーの得点を決定します。minとmaxを計算してそれらを削除する

ユーザーに難易度と7人の審査員のスコアを入力して、そのダイビングの総合スコアを出力するプログラムを作成します。プログラムは配列を使用して7つのスコアを格納する必要があります。また、プログラムは、すべての入力が許容されるデータ範囲内にあることを確認する必要があります。

出力例:

ダイブ(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:7:8

は裁判官5のスコアを入力します。

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

関連する問題