Java 使用next()和nextInt()方法
我正在构建一个图表,列出排名、姓名、一个旧统计、一个新统计以及它们的变化(按顺序)。到目前为止,我已经使用了代码Java 使用next()和nextInt()方法,java,Java,我正在构建一个图表,列出排名、姓名、一个旧统计、一个新统计以及它们的变化(按顺序)。到目前为止,我已经使用了代码 for (int rank = 0; rank < 5; rank++) { String name = scnr.next(); int pop16 = scnr.nextInt(); int pop11 = scnr.nextInt(); canada.add(new Jurisdiction (name, pop16, pop11));
for (int rank = 0; rank < 5; rank++) {
String name = scnr.next();
int pop16 = scnr.nextInt();
int pop11 = scnr.nextInt();
canada.add(new Jurisdiction (name, pop16, pop11));
System.out.printf(format1, rank+1, canada.get(rank).getName(), canada.get(rank).getPop16(), canada.get(rank).getPop16(), canada.get(rank).calculateChange());
}
因此,使用nextLine()
并不是一个真正的选项
我需要13个不同名称和统计数据的实例作为参考。好的,所以您的输入文件语法是。。。不幸的因为没有明显的方法可以知道
stringName
何时结束,intOldStat
何时开始。如果有选择,最好的解决方案是(IMO)更改文件语法;e、 g.要使用空格以外的字段分隔符。。。这是不明确的
(比你想象的更糟的是,有些真正被认可的地名名称中有数字;例如……)
那么如何应对呢?以下是一些想法:
- 使用
和循环,使用/重新组合地名的单词,直到得到一个数字。(但1770年的比赛失败了!)Scanner.hasInt()
- 阅读完整的一行,然后使用
拆分为单词。然后将数组中的最后两个单词视为“stat”值,并使用String.split
将它们转换为数字Integer.parseInt
- 阅读完整的一行,并使用带有组的
对其进行分析,以匹配3个组件regex
或者疯狂地编写一个解析器…请给我们看一个示例输入文件。使用
scnr.nextLine()
而不是scnr.next()
,因为scnr.next()
将从West End
读取ArvindKumarAvinash-他已经说过他不能。。。但我们需要看到一些示例行来理解为什么。为什么这个重复链接?这并不是真正的问题@ArvindKumarAvinashScanner
是一个糟糕的API,它看起来很简单,但使用它从来都不简单。只要避开它。使用BufferedReader
和readLine
,然后使用String.split()
等方法将行拆分为所需的部分。
stringName intOldStat intNewStat