Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- public class Dive {
- public static void main(String[] args) throws FileNotFoundException {
- printIntro();
- Scanner fileScanner = new Scanner(new File("DiveData.txt"));
- processDives(fileScanner);
- }
- public static void printIntro() {
- System.out
- .println("Welcome to the Diver Scoring program."
- + "\nThis program will calculate an overall score for a diver, based on individual dives.");
- }
- public static void processDives(Scanner fileScanner) {
- double avg = 0;
- int count = 0;
- while (fileScanner.hasNext()) {
- int diveNumber = fileScanner.nextInt();
- String diveLine = fileScanner.nextLine();
- double score = calculateDiveScore(diveLine);
- avg += score;
- System.out.printf("The diver's score for dive " + diveNumber
- + " is " + "%.2f. \n", score);
- count++;
- diveNumber = 0;
- }
- System.out.printf("\nThe average score for these dives is "
- + "%.2f. \n", avg / (double) count);
- }
- public static double calculateDiveScore(String diveLine) {
- double score = 0.0;
- String subNumbers = "";
- double difficulty = Double.parseDouble(diveLine.substring(1, 4));
- diveLine = diveLine.substring(5);
- double max = -500, min = 500;
- for (int i = 0; i < diveLine.length(); i++) {
- // if we're getting something other than a space, add it to the
- // string. We'll do the calculations while we have spaces.
- if (diveLine.charAt(i) != ' ') {
- subNumbers += diveLine.charAt(i);
- } else {
- double val = Double.parseDouble(subNumbers);
- // if the score is neither largest nor smallest, add it to total
- // score.
- if (Math.max(val, max) == max && Math.min(val, min) == min) {
- score += val;
- }
- // if it is either largest or smallest, add previous largest or
- // smallest and set current to largest or smallest.
- if (Math.max(val, max) == val) {
- if (max != -500)
- score += max;
- max = val;
- } else if (Math.min(val, min) == val) {
- if (min != 500)
- score += min;
- min = val;
- }
- subNumbers = "";
- }
- }
- //check the last number to see if it's a max or a min
- if (Math.max(Double.parseDouble(subNumbers), max) == Double
- .parseDouble(subNumbers)) {
- score += max;
- } else if (Math.min(Double.parseDouble(subNumbers), min) == Double
- .parseDouble(subNumbers)) {
- score += min;
- }
- return score * difficulty * 0.6;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment