2011-05-17 42 views
0

所以我對這個方案(顯然功課)工作:幫助與需要讀取數據文件和輸出分數程序

在跳水比賽中,每個選手的得分是通過降低最低和最高計算分數 ,然後添加剩餘分數。編寫一個程序,讀取提供的數據文件,格式爲 ,如下表所示。對於每位潛水員使用上述 得分規則輸出潛水員的姓名和總分。將每位潛水員的總得分格式化爲小數點後兩位。例如,下面的陳若琳 的輸出是:陳若琳 - 56.90分。

數據文件:

Chen Ruolin   9.2 9.3 9  9.9 9.5 9.5 9.6 9.8  
Emilie Heymans  9.2 9.2 9  9.9 9.5 9.5 9.7 9.6  
Wang Xin    9.2 9.2 9.1 9.9 9.5 9.6 9.4 9.8  
Paola Espinosa  9.2 9.3 9.2 9  9.5 9.3 9.6 9.8  
Tatiana Ortiz  9.2 9.3 9  9.4 9.1 9.5 9.6 9.8  
Melissa Wu   9.2 9.3 9.3 9.7 9.2 9.2 9.6 9.8  
Marie-Eve Marleau 9.2 9.2 9.2 9.9 9.5 9.2 9.3 9.8  
Tonia Couch   9.2 9  9.1 9.5 9.2 9.3 9.4 9.6  
Laura Wilkinson  9.7 9.1 9.3 9.4 9.5 9.4 9.6 9.2 

潛水員等級:

import java.util.Vector; 

public class Diver 
{ 
private String firstName; 
private String lastName; 
private Vector scores; 

public Diver() 
{ 
    firstName = ""; 
    lastName = ""; 
    scores = new Vector(); 
} 

public Diver(String firstName, String lastName, double... scores) 
{ 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.scores = new Vector(); 

    for (double score : scores) 
    { 
     this.scores.add(score); 
    } 
} 

public String getFirstName() 
{ 
    return firstName; 
} 

public void setFirstName(String firstName) 
{ 
    this.firstName = firstName; 
} 

public String getLastName() 
{ 
    return lastName; 
} 

public void setLastName(String lastName) 
{ 
    this.lastName = lastName; 
} 



public String toString() 
{ 
    return firstName + " " + lastName + scores.toString(); 
} 
} 

潛水員測試程序:

import java.io.*; 
import java.util.*; 

class TestDiver 
{ 
public static void main(String[] args) 
{ 
    try { 
     Scanner scanner = new Scanner(new File("diving_data.txt")); 
     scanner.useLocale(Locale.US); 

     double[] scores = new double[8]; 

     while (scanner.hasNext()) 
     { 
      String firstName = scanner.next(); 
      String lastName = scanner.next(); 

      System.out.println("Diver: " + firstName + " " + lastName + " " + scores); 

      double min = Double.MIN_VALUE; 
      double max = Double.MAX_VALUE; 


      for (int i = 0; i < scores.length; i++) 
      { 
       scores[i] = scanner.nextDouble(); 
      } 

      Diver diver = new Diver(firstName, lastName, scores); 
     } 
     scanner.close(); 
    } 
    catch (Exception e) 
    { 
     System.out.println("Problem: " + e.getMessage()); 
    } 
} 
} 

我絕不是程序員,我的頭因看代碼而痛苦不堪。我的問題是:我怎樣才能正確讀取分數。名稱輸出的很好,但分數基本上是一串亂碼。我錯過了什麼導致了這個問題?

任何幫助將是偉大的。謝謝。

回答

0

你正在讀分數,你只是不打印它們。

import java.io.*; 
import java.util.*; 

class TestDiver 
{ 
    public static void main(String[] args) 
    { 
     try { 
      Scanner scanner = new Scanner(new File("diving_data.txt")); 
      scanner.useLocale(Locale.US); 

      double[] scores = new double[8]; 

      while (scanner.hasNext()) 
      { 
       String firstName = scanner.next(); 
       String lastName = scanner.next(); 

       // scores is not defined here yet 
       System.out.println("Diver: " + firstName + " " + lastName); 

       double min = Double.MIN_VALUE; 
       double max = Double.MAX_VALUE; 


       for (int i = 0; i < scores.length; i++) 
       { 
        scores[i] = scanner.nextDouble(); 

        // prints scores 
        System.out.println(" " + scores[i]); 
       } 

       Diver diver = new Diver(firstName, lastName, scores); 
      } 
      scanner.close(); 
     } 
     catch (Exception e) 
     { 
      System.out.println("Problem: " + e.getMessage()); 
     } 
    } 
} 

你的程序還,只是讀取文件的第一條記錄,我將離開你來修改這個代碼來讀取所有記錄。

+0

我不確定我關注。它現在打印出所有的分數,但它沒有讀取所有的分數?我認爲,因爲它只讀取第一條記錄,所以我不能根據個人潛水員添加分數? – Alex 2011-05-17 23:57:38

+0

你必須做一個循環來讀取每個驅動程序的所有分數。您還必須將各個分數相加才能獲得總分。 – Marcelo 2011-05-18 01:13:05