获取java.util.NoSuchElementException
我正在尝试为一个问题实施一个解决方案。该代码在eclipse中的工作方式很有魅力,但在Hacker Rank IDE中编译时会出现以下异常:获取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
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()
构造函数。我也尝试过这个方法,但仍然会出现相同的错误:(