Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取java.util.NoSuchElementException_Java_Java.util.scanner - Fatal编程技术网

获取java.util.NoSuchElementException

获取java.util.NoSuchElementException,java,java.util.scanner,Java,Java.util.scanner,我正在尝试为一个问题实施一个解决方案。该代码在eclipse中的工作方式很有魅力,但在Hacker Rank IDE中编译时会出现以下异常: Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1485) at java.util.S

我正在尝试为一个问题实施一个解决方案。该代码在eclipse中的工作方式很有魅力,但在Hacker Rank IDE中编译时会出现以下异常:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Solution.main(Solution.java:17)
这是密码

import java.util.Scanner;
class Ideone {
    public static void main(String[] args) throws Exception {
        Scanner input=new Scanner(System.in);

        int test_case = input.nextInt();
        //System.out.println("test case"+test_case);

        String ans[] = new String[test_case];

        for (int i = 0; i < test_case; i++) {
            int row = input.nextInt();
            int col =input.nextInt();
            //System.out.println("row:"+ row+" col: "+col);
            Result result = new Result(row, col);
            result.putRandom();
            //result.display();
            result.getPattern();
            ans[i] = result.match();

        }

        for (int i = 0; i < ans.length; i++) {
            System.out.println(ans[i]);
        }

    }

}

class Result {
    String[] matrix;
    int rows;
    int col;

    int pattern_row;
    int pattern_col;
    String[] pattern_matrix;
    Scanner inp=new Scanner(System.in);

    public Result(int r, int c) {
        rows = r;
        col = c;
        matrix = new String[rows];
    }

    public void putRandom() throws Exception {
        // System.out.println("Row:"+rows+" Colems:"+col);
    //Scanner inp = new Scanner(System.in);
        for (int i = 0; i < rows; i++) {
            matrix[i] =inp.nextLine();
            //System.out.println("matrix[i] : "+matrix[i] );
        }
    }

    public void display() {
        for (int i = 0; i < rows; i++) {
            System.out.print(matrix[i] + " ");
            System.out.println();
        }
    }

    public void getPattern() throws Exception{
        int r= inp.nextInt();
        int c =inp.nextInt();

        pattern_row = r;
        pattern_col = c;
        //System.out.println("pAttern row"+pattern_row);
        pattern_matrix = new String[pattern_row];
        putRandomInPattern();
    }

    public void putRandomInPattern() throws Exception{
        //Scanner inp = new Scanner(System.in);
        inp.nextLine();
        for (int i = 0; i < pattern_row; i++) {
            pattern_matrix[i] = inp.nextLine();
        }
        //display();
    }

    public String match() {
        String result = "NO";
        for (int r = 0; r < pattern_row; r++) {
            int index = find(pattern_matrix[r]);
            if (index != -1) {
                result = isPatternPresent(index, r);
                return result;
            }
        }
        return result;
    }

    public String isPatternPresent(int index_matrix, int index_pattern) {
        int matched = 0;
        int j = index_pattern;
        for (int i = index_matrix; i < (index_matrix+(pattern_row)); i++) {
            if (matrix[i].contains(pattern_matrix[j])) {
                matched++;
                j++;
            }
        }
        //System.out.println("matched:" + matched);
        if (matched == pattern_row)
            return "YES";
        return "NO";
    }

    public int find(String elem) {
        for (int i = 0; i < matrix.length; i++) {
            if (matrix[i].contains(elem)) {
                //System.out.println("found" + matrix[i]);
                return i;
            }
        }
        return -1;
    }

}
import java.util.Scanner;
表意文字{
公共静态void main(字符串[]args)引发异常{
扫描仪输入=新扫描仪(System.in);
int test_case=input.nextInt();
//System.out.println(“测试用例”+测试用例);
字符串ans[]=新字符串[测试用例];
对于(int i=0;i
这部分发生了一些事情

    for (int i = 0; i < rows; i++) {
        matrix[i] =inp.nextLine();
        //System.out.println("matrix[i] : "+matrix[i] );
    }
for(int i=0;i
我认为在使用时应该将scanner传递给putRandom()方法,而不是在该类中创建一个新的scanner,这可能会弄乱hackerrank

public void putRandom(Scanner scannerName) throws Exception {
    Scanner inp = scannerName;
    for (int i = 0; i < rows; i++) {
        matrix[i] =inp.nextLine();
    }
    inp.close();
}
public void putRandom(扫描仪扫描名)引发异常{
扫描仪inp=扫描仪名称;
对于(int i=0;i
您有两个不同的
新扫描仪实例(System.in)
。你应该只有一个。一个快速的解决方案是将第一个传递给
new Result()
构造函数。我也尝试过这个方法,但仍然会出现相同的错误:(