java - 扫描仪帮助 - Java

标签 java file java.util.scanner filereader

我一直在寻找一些帮助,因为我对如何实现这一点束手无策。

作业是读入一个文件,其中包含州名、州长和他获得的补偿。

文件示例:

California Tim John $50,000 $78,890 $30,000
North Dakota John Jones $30,000 $40,000 $56,000
Washington Susan K. Bones $30,000 $40,000 $56,000

如你所见,一个名字可以包含三个以上的单词(包括中间的首字母)

我应该得到的输出是总裁姓名后跟总薪酬..

输出示例:

Susan K. Bones 126,000 美元

我已经编写了打印出总薪酬的代码。但我坚持读名字。如何忽略最多两个单词的州名,只取州长的名字?

这是我的总补偿代码。

另请注意:我必须对此使用扫描仪。

Scanner in = new Scanner(file);
            in.nextLine();      
                do {
                    double totalCompensation = 0.0; 
                    String readLine = in.nextLine();
                    readLine = readLine.replaceAll(",", "").replace("$", " ");
                    String presidentName = "";
                    Scanner readNumber = new Scanner(readLine);
                    while(readNumber.hasNext()) {                               
                        if (readNumber.hasNextDouble()) 
                            totalCompensation += readNumber.nextDouble();
                        else {
                            readNumber.next();
                        }
                    }

另一个注意事项:别担心,我确实有一段时间(in.hasNextLine())来关闭 do 循环,稍后在我的代码中。我真的不想粘贴整个内容。

欢迎任何提示!谢谢!

最佳答案

如果您提前知道您只会看到美国的州名,您可以让您的代码首先查找州名。既然你知道哪部分是州名,哪部分是赔款,那么剩下的一定是州长的名字。只有 50 个州,所以这并不是不可能的困难。

如果这更通用并且可以是城市/国家/其他任何事物而不仅仅是美国,则没有更好的分隔符(或引号来定义“州名称”和“州长名称”)就无法区分。

编辑:您提到还有一个进一步的要求,即“领导者”姓名的格式为“Firstname LastName”“Firstname M. Lastname”或“F. Middlename Lastname”。现在你已经有足够的时间来解决这个问题了。

当你用扫描仪拉出字符串时,将它们放在一个列表中(或者如果你学习了这种数据类型,堆栈更合适)。向后浏览列表。如果第二个元素是首字母,则您知道该名称由三部分组成。如果第三个元素是首字母,你就知道这个名字有三个部分。如果两者都不是首字母,则您知道该名称有两个部分。凡不是领袖名字的,就是地方的名字。

关于java - 扫描仪帮助 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346655/

相关文章:

java - Java VM 如何处理 MT 上下文中的缓存行和内存对齐?

python - 为什么在 Python 2 中打开和迭代文件句柄的速度比 Python 3 快两倍?

javascript - 在 JavaScript 中读/写文件

file - 如何使用VBScript重命名目录中位于文件夹名称之前的所有文件?

java - 如何在 Java Scanner 中转义分号

java - 弗洛伊德三角的意外显示

java - 当 namespace 前缀更改时,如何验证 XML 签名?

java - 通过 Join Table 用于子步骤的 JPA

java - 如果用户输入只是数字或字母,如何使用 nextLine() 检查?

从文件扫描时出现 Java InputMismatchException 错误