2013-10-11 134 views
-2

問題是:一所大學的員工薪水爲http://cs.armstrong.edu/liang/data/Salary.txt。文件中的每一行由一名教師的計算總工資和平均工資

  • 頭名,
  • 姓氏,
  • 排名,
  • 和薪水。

編寫一個程序,以顯示工資總額

  • 助理教授,
  • 副教授,
  • 全職教授,
  • 分別全體教職工,

並顯示平均工資

  • 副教授,
  • 副教授,
  • 全職教授,分別爲
  • 和全體教職工。

而且我的代碼迄今:

import java.util.Scanner; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
public class Salary { 
    public static void main(String[] args) throws MalformedURLException{ 
     URL salary = new URL("http://cs.armstrong.edu/liang/data/Salary.txt"); 
     try{ 
      Scanner read = new Scanner(salary.openStream()); 
      while(read.hasNextLine()){ 
       String line = read.nextLine(); 
       System.out.println(line); //Testing to see if the URL works 
      } 
      read.close(); 
     } catch(IOException e){ 
      e.getStackTrace(); 
     } 
    } 
} 

我希望我可以做的是創建基於文本的每一行的對象,然後將它們組合在一起,根據他們的排名,並從那裏走,然而,我真的不知道如何爲我的生活做到這一點。我認爲,一旦我按照我想要的方式將所有事情組合在一起,那麼我應該能夠找出其他問題,但我不確定是否應該在主要方法中完成所有這些工作。任何幫助,將不勝感激。

回答

1

不會做你的功課,但是這可能會幫助您:

  • line.split("\\s")併線分割成String數組,用空格隔開。
  • Double.valueOf(string)將字符串轉換爲雙精度型。如果字符串實際上不是數字,將拋出異常。
  • 然後 - 正如你已經建議的 - 把結果放在不可變的數據類中以便於處理應該可以做到。
0

從你的問題描述我不認爲你真的關心教員的名字。在這種情況下,對於你的問題,我建議你使用HashMap,它將一個鍵映射到一個數組列表。像

HashMap<String, ArrayList<Float>> hs = new HashMap<String, ArrayList<Float>>();

key可以教員即類型助理教授,副教授,正教授等,並在arraylist中存儲工資,因此當您需要計算總薪金時,您只需對單個數組列表進行這些操作即可獲得平均薪資,這些操作既好又易。您可以使用.split(" ")方法在讀取時從行中提取各個部分,並且所有行的格式與其中途不會中斷相似。

0

嗯,我想你可能在將數據從字符串轉換爲雙精度時遇到問題。 在我看來,爲什麼不在while循環中處理數據呢? 如

String first_name,last_name,rank; 
double salary; 
first_name=read.next(); 
last_name=read.next(); 
rank=read.next; 
salary=read.next_Double(); 

//定義應該拿出while循環 的(next()的雙沒有在文中允許使用next_Double分) 那麼你得到你想要的數據,你可以輕鬆處理它。希望這可以幫助你。