Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java printf和读取文本文件_Java_Printf - Fatal编程技术网

Java printf和读取文本文件

Java printf和读取文本文件,java,printf,Java,Printf,我在让我的代码汇总一个文本文件的所有工资时遇到问题。它应该把所有这些加起来,给我一个平均工资。另外,我在使输出中的一行正确格式化时遇到问题。请帮忙,我对编程还是很陌生的!这是我的主要任务 导入java.util.*; 导入java.io.*; 公共类文件 { 公共静态无效字符串[]args { 字符串fName; 字符串名称; 串级; 双薪=0; 双新闻=0; 扫描仪填充=空; 员工[]emp=新员工[20]; int numEmployee=0; //打开文件 尝试 { infle=new S

我在让我的代码汇总一个文本文件的所有工资时遇到问题。它应该把所有这些加起来,给我一个平均工资。另外,我在使输出中的一行正确格式化时遇到问题。请帮忙,我对编程还是很陌生的!这是我的主要任务

导入java.util.*; 导入java.io.*; 公共类文件 { 公共静态无效字符串[]args { 字符串fName; 字符串名称; 串级; 双薪=0; 双新闻=0; 扫描仪填充=空; 员工[]emp=新员工[20]; int numEmployee=0; //打开文件 尝试 { infle=new Scannernew Fileemployee.txt; }捕获文件NotFounde异常 { System.err.printlnError:未找到employee.txt文件; } 而Infle.Hasnet { fName=infle.next; lName=infle.next; 秩=infle.next; newSal=infle.nextDouble; 工资+=新闻; emp【新员工】=新员工姓名、lName、职级、工资; numEmployee++; } System.out.printlnAcme公司\n; System.out.printfn员工人数:%5d,numEmployee; System.out.printf\n平均工资:%13.2f,工资/numememployee; System.out.printf\n年度总额%16.2f,工资; System.out.printf\n\n%-8s%15s%10s,姓名、职级、薪水\n; 对于int i=0;i Acme公司 员工人数:9人 平均工资:58740.50 年度总数528664.54 名衔工资 --------- - ----- 琼斯,威廉B2 42500.00 贝克,苏珊A3 107500.00 凯恩,霍雷肖A1 191268.95 贝尔,泰迪B4 244268.95 盖特,Allie A2 292268.95 莎莉·曼德,A1 354392.84 阿斯帕格斯,艾米A1 454442.84 哈克贝利,亨利B1 495677.34 鲁塔巴加,Ryan B2 528664.54
平均工资和年总工资完全错误,总工资应该超过200万,平均工资应该在30万左右。谢谢

看起来您正在为每个新员工输入分配累计工资:

emp[numEmployee] = new Employee(fName, lName, rank, salary);
这不应该吗

emp[numEmployee] = new Employee(fName, lName, rank, newSal);

你读的文件看起来怎么样?扫描仪接下来会读取整行内容,可能不是您想要的内容文本文件看起来就像输出,只是没有格式化。姓名、职级和薪水之间只有空格。那么整个文件只有一行,数据之间用空格隔开?然后,您需要以字符串形式读取整个文件,并通过将其拆分为空格处的数组来访问部分:string[]parts=string.split;你能同时发布输入文件或其样本吗?不,文件中每行有一个名字、一个等级和一份薪水。非常感谢!!关于如何修改亨利·哈克贝利的格式有什么想法吗?不客气。也许您可以跟踪while循环中最长的名称,并将格式调整为该名称?比如int max_length;int length=fName.length+lName.length;如果长度>最大长度最大长度=长度;?或者,如果您确定名称不会超过一定数量的字符,您可以将固定宽度调大一点。此主题可能很有趣:。