Java 无法读取整数输入的最后一行

Java 无法读取整数输入的最后一行,java,input,java.util.scanner,system.in,Java,Input,Java.util.scanner,System.in,你好, 上面给出的代码一次只取一行,我将其粘贴到输入中: 110 100 200 201 210 900 1000 它应该读取每一行,取每一个整数并将其放入input1和input2中,然后调用方法maxcycle。但是,扫描仪没有读取最后一行 *kbd.lastLine()无法工作,因为我不需要字符串。我要整数 请帮助,谢谢。您可以使用hasNextInt方法 while(kbd.hasNextInt()) { int input1=kbd.nextInt(); int input2=kbd

你好,

上面给出的代码一次只取一行,我将其粘贴到输入中:

110

100 200

201 210

900 1000

它应该读取每一行,取每一个整数并将其放入input1和input2中,然后调用方法maxcycle。但是,扫描仪没有读取最后一行

*
kbd.lastLine()
无法工作,因为我不需要字符串。我要整数


请帮助,谢谢。

您可以使用hasNextInt方法

while(kbd.hasNextInt())
{
int input1=kbd.nextInt();

int input2=kbd.nextInt();
这是因为即使在最后一行调用
nextInt()
两次之后,
hasNextLine()
仍然是
true
,因为最后一个
\n
仍在输入流中。因此,您应该或添加
nextLine()
如下:

public static void main(String[] arg) {
    System.out.println("Enter the pairs: ");
    Scanner kbd = new Scanner(System.in);
    while(kbd.hasNextLine() ) {
        int input1 = kbd.nextInt();
        int input2 = kbd.nextInt();
        maxcycle(input1,input2); 
    }   
}  
或者将
hasNextLine()
替换为
hasNextInt()

while(kbd.hasNextLine()) {
    int input1 = kbd.nextInt();
    int input2 = kbd.nextInt();
    kbd.nextLine();
    maxcycle(input1,input2);
}

请尝试在for循环中添加System.out.println语句,以验证是否捕获了所有输入

例如:

while(kbd.hasNextInt()) {
    int input1 = kbd.nextInt();
    int input2 = kbd.nextInt();
    maxcycle(input1,input2);
}
此方法:

System.out.println("input1:"+input1);
System.out.println("input2:"+input2);
maxcycle(input1,input2);
如果当前是最后一行要读取,则返回false,因此根据您的条件,最后一行不会被处理。您可以更改条件以确保正确处理最后一行,或者读取while块之外的最后两个元素

另一种方法是,如果您确切知道输入的格式,例如,假设第一行是二维数组的大小,您可以根据该值读取所有数字

kbd.hasNextLine()
Scanner s=新的扫描仪(System.in);
//读第一个数字
长i=s.nextLong();
长j=s.nextLong();
用于(长i1=0;i1
使用
while(kbd.hasNextLine())
并尝试读取整数…这是错误的我已经做了这两件事,仍然给出了输出:输入对:1 10 100 200 201 210输入1 10 20 100 200 125 201 210 89输出900 1000**这也是输入,但它保持不变,在整个输出之后,并且没有得到计算
Scanner s = new Scanner(System.in);
// Read first number
long i = s.nextLong();
long j = s.nextLong();
for (long i1 = 0; i1 < i; i++) {
    for (long j1 = 0; j1 < j; i++) {
        long n1 = s.nextLong();
        long n2 = s.nextLong();
        // Do something with n1 and n2... 
    }
}