簡體   English   中英

獲取 java.util.NoSuchElementException

[英]Getting java.util.NoSuchElementException

我正在嘗試為問題實施解決方案。 該代碼在 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;
    }

}

這部分發生了一些事情

    for (int i = 0; i < rows; i++) {
        matrix[i] =inp.nextLine();
        //System.out.println("matrix[i] : "+matrix[i] );
    }

我認為你應該在使用它時將掃描器傳遞給 putRandom() 方法,而不是在該類中創建一個新的掃描器,這可能會弄亂hackerrank

public void putRandom(Scanner scannerName) throws Exception {
    Scanner inp = scannerName;
    for (int i = 0; i < rows; i++) {
        matrix[i] =inp.nextLine();
    }
    inp.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM