Programmering‎ > ‎programmering B Java‎ > ‎exempel‎ > ‎

Bowlingresultat

Om vi ska gå igenom en fil som är formaterad med kolumner där datan på varje rad hör ihop med ett visst namn så använder man sig av en loopi i loopen då antalet kolumner är okänt.
I följande exempel har vi bowlingresultat i en fil formaterat enligt följande:

resultat.txt

Rune 98 130 189
Kalle 150 230 290
Kurt 32 5 23 22 56
Al 290 299 100
Bill 12 10 2

Nedan följer ett exempel på hur vi kan gå igenom filen, räkna ut medelresultatet per serie och presentera den person med högst medelvärde:

BowlingResultat.java

import java.util.*;
import java.io.*;
import javax.swing.*;

public class BowlingResultat {

    public static void main(String[] args) throws IOException {
        //frågar efter filnamnet på resultatsfilen
        String filnamn = JOptionPane.showInputDialog("resultatsfil?");
        //kopplar en ny Scanner till filen
        Scanner fs = new Scanner(new File(filnamn));
        //håller reda på vinnarens namn
        String vinnare = "";
        //håller reda på högsta medelresultat
        double hogstaMedel = 0;

        //loopar tills filen är slut
        while(fs.hasNext()){
            //läser in en sträng (namnet)
            String namn = fs.next();
            //håller reda på totalsumman för alla resultat för personen
            int summa = 0;
            //håller reda på antal serier spelade
            int antal = 0;
            //läser igenom alla resultat
            while(fs.hasNextInt()){
                //adderar resultatet till summan
                summa += fs.nextInt();
                //ökar antalet spelade serier med 1
                antal++;
            }
            //beräknar medelresultatet för personen
            double medel = summa/antal;
            //kollar om medlvärdet var det hösta bland spelarna
            if(medel > hogstaMedel){
                //lagrar namn och resultat
                vinnare = namn;
                hogstaMedel = medel;
            }
            //skriver ut personens medel
            System.out.println(namn+" "+medel);
        }
        //stänger filen
        fs.close();
        //skriver ut vinnarens medelvärde på en egen rad
        System.out.println("VINNARE!!!: "+vinnare+" medel: "+hogstaMedel);
    }
}


 
Comments