计算总薪水和平均薪水

时间:2013-10-11 23:11:03

标签: java url io java.util.scanner

问题是:一所大学在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();
        }
    }
}

我希望我能做的就是从每行文本中创建对象,然后根据他们的等级将它们组合在一起然后从那里开始,但是,我老实说无法弄清楚如何为生活做到这一点我的。我想一旦我按照我想要的方式将所有内容组合在一起,那么我应该能够弄清楚其余部分,但我不确定我是否应该在main方法中完成所有这些操作。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

不打算做功课,但这可能对你有所帮助:

  • line.split("\\s")会将该行拆分为一个String数组,由空格分隔。
  • Double.valueOf(string)将字符串转换为double。如果String实际上不是数字,则抛出异常。
  • 然后 - 正如您已经建议的那样 - 将结果放在不可变数据类中以便于处理应该可以解决问题。

答案 1 :(得分:0)

从你的问题描述我不认为你真的关心教师的名字。在这种情况下,我建议您使用从键映射到arraylist的HashMap。

之类的东西

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

你的key可以是教师类型,即助理教授,副教授,全职教授等,而在arraylist中你存储工资,所以当你必须计算工资总额时,平均工资你只需要执行这些操作个人的arraylists很好,很容易做到。您可以使用.split(" ")方法在阅读时从行中提取单个部分,并且所有行的格式都类似,它不会在中途中断。

答案 2 :(得分:0)

好吧,我认为您可能在将数据从String转换为Double时遇到问题。 在我看来,为什么不在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()double,使用next_Double to sub) 然后您就可以获得所需的数据,并且可以轻松处理。 希望这可以帮到你。