因此,对于我的项目,这就是我需要做的事情在潜水运动中,七位评委会在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)
不是搜索最小值或最大值,而是可以对值数组进行排序,然后从数组的一端拉出最大值,从另一端拉开最小值。
对于排序,您可以使用冒泡排序:
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];
您可能需要进行一些小的更改才能将其实现到您自己的代码中。