gpt4 book ai didi

java - 跳水成绩数组程序

转载 作者:行者123 更新时间:2023-12-01 17:42:45 25 4
gpt4 key购买 nike

我有一个潜水评分程序。但是,我很难获得最低分数并在发生错误后处理输入。有人可以建议吗?感谢您提供的任何帮助。 敬上, 范光

 Is there code to get the lowest and highest scores?  How come I get 0 for the lowest score instead of 5?  Also, after an error is made, can the user reenter a different score and get the correct answer?   divingScores[i - 1] = divingScores[i];  Is there a way to go back on an array and enter another value?  The dive scoring program takes the evaluative scores of seven judges and arrives at a final score for a dive. Any help is most greatly appreciated.

问题描述: *
* 在跳水运动中,七名裁判给出0到10之间的分数, * 其中每个分数可以是浮点值。最高和最低 * 分数被丢弃,剩下的分数相加。这 * 然后将总和乘以该潜水的难度。 (这 * 难度范围从1.2到3.8分。) 总分是 * 乘以 0.6 得出潜水员的分数。 * 编写一个程序,要求用户输入潜水的难度 * 和七位评委的分数,然后显示该跳水的总分。 * 程序应确保所有输入都在允许的数据范围内 * 范围。 * 评委打分应存储在数组中。 * 请对所有用户输入进行错误检查(错误程度 * 难度和每位评委的分数),验证参赛作品是否来自 * 用户处于最小值和最大值之间。 * 下面给出了一个示例对话框: * * ** 跳水分数计算器 ** * * 输入 1 号裁判的评分 (0 – 10):5 * 输入 2 号裁判的评分 (0 – 10):8.5 * 输入 3 号裁判的评分 (0 – 10):7 * 输入 4 号裁判的评分 (0 – 10):11 * ** 请输入 0 到 10 之间的数字。 * 输入 4 号裁判的评分 (0 – 10):10 * 输入 5 号裁判的评分 (0 – 10):9.9 * 输入 6 号裁判的评分 (0 – 10):8.1 * 输入 7 号裁判的评分 (0 – 10):6.3 * 输入难度(1.2 – 3.8):4 * ** 请输入 1.2 到 3.8 之间的数字)。 * 输入难度(1.2 – 3.8):3.3
* * 所有分数总和:54.8 * 减去最高点和最低点:39.8 *最终得分:78.80 *

import java.util.Scanner ;
/**
* The dive scoring program takes the evaluative scores of seven judges and
* arrives at a final score for a dive.
*
* @author Quang Pham
* @version Module8, Homework Project 1, 4/1/20
*
* Algorithm:
*
* 1. Seven judge's scores are entered into an array.
* 2. The scores are checked to see if they are between the minimum and
* maximum values.
* 3. The total of all the scores, the degree of difficulty, the scores
* minus the high and low scores, and the final score are outputted.
*
*
* Problem Description:
*
* In the sport of diving, seven judges award a score between 0 and 10,
* where each score may be a floating-point value. The highest and lowest
* scores are thrown out and the remaining scores are added together. The
* sum is then multiplied by the degree of difficulty for that dive. (The
* degree of difficulty ranges from 1.2 to 3.8 points.) The total is then
* multiplied by 0.6 to determine the diver’s score.
* Write a program that asks a user to enter a dive's degree of difficulty
* and seven judges’ scores, then displays the overall score for that dive.
* The program should ensure that all inputs are within the allowable data
* ranges.
* The judges scores should be stored in array.
* Please perform error checking on all user entries (degree of
* difficulty and each judge's score), verifying that the entry from the
* user is between a minimum and maximum values.
* A sample dialog is given below:
*
* ** Diving Score Calculator **
*
* Enter the score from Judge #1 (0 – 10): 5
* Enter the score from Judge #2 (0 – 10): 8.5
* Enter the score from Judge #3 (0 – 10): 7
* Enter the score from Judge #4 (0 – 10): 11
* ** Please enter a number from 0 to 10.
* Enter the score from Judge #4 (0 – 10): 10
* Enter the score from Judge #5 (0 – 10): 9.9
* Enter the score from Judge #6 (0 – 10): 8.1
* Enter the score from Judge #7 (0 – 10): 6.3
* Enter the degree of difficulty (1.2 – 3.8): 4
* ** Please enter a number from 1.2 to 3.8).
* Enter the degree of difficulty (1.2 – 3.8): 3.3
*
* The total of all scores: 54.8
* Minus high and low: 39.8
* Final Score: 78.80
*
* Format your final score to 2 digits. You may write this assignment
* as a single class, where you use helper (private) methods to main instead
* of putting them in a separate class.
* Test your program with several different input dives and print
* screen or screen snip of the results.
*
*/
public class DiveScoringProgram {
public static void main(String[] args) {

Scanner keyboard = new Scanner(System.in);

double divingScores[] = new double[7] ;
double input ;
double difficultyInput = 0 ;
double high = 0 ;
double low = 0 ;
double totalAllScores = 0 ;
double totalMinusHighLow = 0 ;
double totalFinalScore = 0 ;
double Arrays = 0 ;

for (int i = 0; i < divingScores.length; i++)
{
System.out.println("Enter the score from Judge #" + (i + 1) + " (0-10): ") ;
input = keyboard.nextDouble();

if(input < 0 || input > 10)
{
System.out.println("Invalid score. Please enter a number from 0 to 10") ;
divingScores[i - 1] = divingScores[i];
input = keyboard.nextDouble() ;
}
else
{
totalAllScores += input ;
divingScores[i] = input;
}
}

while (difficultyInput < 1.2 || difficultyInput > 3.8)
{
System.out.println("Enter the degree of difficulty (1.2- 3.8): ") ;
difficultyInput = keyboard.nextDouble() ;
if (difficultyInput < 1.2 || difficultyInput > 3.8)
{
System.out.println("Invalid difficulty input. Please enter a number from 1.2 to 3.8.") ;
difficultyInput = keyboard.nextDouble() ;
}
}
//determine high and low values
for(int i = 0; i < divingScores.length; i++)
{
if(divingScores[i] > high)
{high = divingScores[i];}
if(divingScores[i] < low)
{low = divingScores[i];}
}

System.out.println("low is " + low) ;
System.out.println("high is " + high) ;

totalMinusHighLow = totalAllScores - high - low ;
totalFinalScore = totalMinusHighLow * difficultyInput * 0.6 ;

System.out.println("The total of all scores: " + totalAllScores) ;
System.out.println("Minus high and low: " + totalMinusHighLow) ;
System.out.printf("The overall final score for the dive: %.2f\n", totalFinalScore);

} //end main
} //end class

最佳答案

在重构您的代码时,我会尝试尽可能地分解它。请阅读代码注释以获取解释。

/** Diving Score Calculator **/

// For easier understanding, let's re-declare your variables
// making sure their names are related to the logic at hand
// because this is where I think most of your problem started.

////Constants
final int MIN_SCORE = 0;
final int MAX_SCORE = 10;
final int JUDGE_COUNT = 7;
final float MIN_DIFFICULTY = 1.2f;
final float MAX_DIFFICULTY = 3.8f;
final float SCORE_DETERMINANT = 0.6f;
//// Non-constants
float[ ] diver_scores;
float sum_total, sum_high_low;
float diff_total_high_low, final_score;
float difficulty;

//// Initialize the non-constants using helper methods
// Get the array of scores by judges from the user
diver_scores = getDiverScores(MIN_SCORE, MAX_SCORE, JUDGE_COUNT);
// Get the sum of all values in the array
sum_total = getSumTotal(diver_scores);
// Get the sum of highest and lowest score in the array
sum_high_low = getSumHighLow(diver_scores);
// Subtract the highest and lowest score from total score
diff_total_high_low = sum_total - sum_high_low;
// Get the difficulty level from the user
difficulty = getDifficulty(MIN_DIFFICULTY, MAX_DIFFICULTY);
// Calculate final score
final_score = getFinalScore(diff_total_high_low, difficulty, SCORE_DETERMINANT);
// Print out the results
System.out.println("The total of all scores: %.1f", sum_total) ;
System.out.println("Minus high and low: %.1f", diff_total_high_low) ;
System.out.printf("Final score: %.2f", final_score);

...您的辅助方法

public float[] getDiverScores(int min, int max, int count){
float[] scores = new float[count];
for(int i = 0; i < count; i++){
float score = getInputScore(i+1)
while (score < min || score > max){
// User entered an invalid range for score
// Show error message
System.out.println(" ** Please enter a number from %d to %d", min, max);
// Request for score again
score = getInputScore(i+1);
}
scores[i] = score;
}
return scores;
}

public float getInputScore(int index){
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the score from Judge #" + (index) + " (0-10): ");
// Get and return inputted value from the user
return keyboard.nextFloat();
}

public float getSumTotal(float[ ] scores){
// Sum array using helper method from java8
return java.util.stream.FloatStream.of(scores).sum();
}

public float getSumHighLow(float [ ] scores){
Arrays.sort(scores);
// Sum the highest and lowest values
return scores[0] + scores[scores.length - 1];
}

public float getDifficulty(float min, float max){
float level = getInputDifficulty();
while (level < min || level > max){
System.out.println(" ** Please enter a number from %.1f to %.1f", min, max);
level = getInputDifficulty();
}
return level;
}

public float getInputDifficulty(float min, float max){
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the degree of difficulty (%.1f - %.1f): ", min, max);
// Value from the user
return keyboard.nextFloat();
}

public float getFinalScore(float diff, float difficulty, float dter){
return diff * difficulty * dter;
}

关于java - 跳水成绩数组程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60922660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com