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.要使用空格以外的字段分隔符。。。这是不明确的

(比你想象的更糟的是,有些真正被认可的地名名称中有数字;例如……)

那么如何应对呢?以下是一些想法:

  • 使用
    Scanner.hasInt()
    和循环,使用/重新组合地名的单词,直到得到一个数字。(但1770年的比赛失败了!)

  • 阅读完整的一行,然后使用
    String.split
    拆分为单词。然后将数组中的最后两个单词视为“stat”值,并使用
    Integer.parseInt
    将它们转换为数字

  • 阅读完整的一行,并使用带有组的
    regex
    对其进行分析,以匹配3个组件


或者疯狂地编写一个解析器…

请给我们看一个示例输入文件。使用
scnr.nextLine()
而不是
scnr.next()
,因为
scnr.next()
将从
West End
读取
ArvindKumarAvinash-他已经说过他不能。。。但我们需要看到一些示例行来理解为什么。为什么这个重复链接?这并不是真正的问题@ArvindKumarAvinash
Scanner
是一个糟糕的API,它看起来很简单,但使用它从来都不简单。只要避开它。使用
BufferedReader
readLine
,然后使用
String.split()
等方法将行拆分为所需的部分。
stringName   intOldStat   intNewStat