实现Scanner类时的NoSuchElement异常

时间:2017-02-18 19:11:13

标签: java java.util.scanner nosuchelementexception

要记住时间和空间复杂性应该是最小的要点。为了实现这一点,我将两个for循环合二为一,然后发生错误java.util.NoSuchElementException

错误在以下行:a = in.nextInt();

import java.io.*;
import java.util.*;

public class Solution {

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    int N = in.nextInt();
    int M = in.nextInt();

    long m[] = new long[N];
    long big=0; 

    int a = in.nextInt();
    int b = in.nextInt();
    int k = in.nextInt();

    int i;
    int j;
    for( i=0,j=a-1 ; i<M && j<=N  ; j++)
    {
            m[j] = m[j] + k;
            big = Math.max(big, m[j]);

        if(j==b-1)
        {
            a = in.nextInt();
            b = in.nextInt();
            k = in.nextInt();
            j = a-1;
            i=i+1;
        }
    }
    System.out.print(big);
}
}

之前工作的中间代码如下:

for(int i=0;i<M;i++)
    {
        int a = in.nextInt();
        int b = in.nextInt();
        int k = in.nextInt();

        for(int j=a-1;j<=b-1;j++)
        {
            m[j] = m[j] + k;
            if(m[j]>big)
            {
                big = m[j];    
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

m [a-1]存在的保证是什么,a是动态输入,你没有检查它是否是&gt; = 0和

答案 1 :(得分:0)

在我看来,根本原因在于循环测试:

for( i=0,j=a-1 ; i<M && j<=N  ; j++)

实际上,数组声明为:

long m[] = new long[N];

所以测试应该是:

 for( i=0,j=a-1 ; i<M && j<N  ; j++)