Java扫描器:获取;java.util.NoSuchElementException“;错误,不知道为什么

Java扫描器:获取;java.util.NoSuchElementException“;错误,不知道为什么,java,arrays,Java,Arrays,我正在写一个文字搜索程序,从一个文本文件扫描进来。文本文件包含两个整数(拼图的尺寸,在本例中为10x10),后面是拼图,后面是另一个整数(要查找的单词数量),最后是要查找的单词。我正在尝试编写代码,以便程序将执行for循环,该循环将扫描中的下一行,然后将字符串中的每个字符添加到2D数组中。然而,扫描器似乎继续扫描文件,并最终在文件上“越界”,即使根据for循环,它应该运行不超过10次(拼图的尺寸为10x10) 下面是有问题的代码: Scanner scan = new Scanner(new F

我正在写一个文字搜索程序,从一个文本文件扫描进来。文本文件包含两个整数(拼图的尺寸,在本例中为10x10),后面是拼图,后面是另一个整数(要查找的单词数量),最后是要查找的单词。我正在尝试编写代码,以便程序将执行for循环,该循环将扫描中的下一行,然后将字符串中的每个字符添加到2D数组中。然而,扫描器似乎继续扫描文件,并最终在文件上“越界”,即使根据for循环,它应该运行不超过10次(拼图的尺寸为10x10)

下面是有问题的代码:

Scanner scan = new Scanner(new File("puzzle.txt"));
    int rows = scan.nextInt();
    int columns = scan.nextInt();   
    int [][] wordSearch = new int[rows][columns];

    for (int i = 0; i < rows; i++){
        for (int j = 0; j < columns; j++){
            String temp = scan.nextLine();
            for (int k = 0; k < temp.length(); k++){
                wordSearch[i][j] = temp.charAt(k);

              }
            }
        }
Scanner scan=新扫描仪(新文件(“puzzle.txt”);
int rows=scan.nextInt();
int columns=scan.nextInt();
int[][]wordSearch=新int[行][列];
对于(int i=0;i
下面是puzzle.txt:

  • 10 10
  • WVERTICALL
  • 鲁阿弗尔萨布
  • 阿西里亚托亚
  • NDODKONWDC
  • 凯苏德克博士
  • 厄普泽格利夫
  • 姆西瓦拉
  • 阿尔克瑞尔
  • 科迪德
  • 赫尔斯勒思
  • 十,
  • 发现
  • 随机的
  • 侦探
  • 落后的
  • 垂直的
  • 对角线的
  • 维基百科
  • 水平的
  • 文字搜索
然而,扫描器似乎继续扫描文件,并最终在文件上“越界”,即使根据for循环,它应该运行不超过10次(拼图的尺寸为10x10)

不,看看你的循环:

for (int i = 0; i < rows; i++){
    for (int j = 0; j < columns; j++){
        String temp = scan.nextLine();
for(int i=0;i
您正在为每一行和每一列运行它。我怀疑您实际上想要:

for (int i = 0; i < rows; i++) {
    String temp = scan.nextLine();
    for (int j = 0; j < columns; j++) {
        wordSearch[i][j] = temp.charAt(j);
    }
}
for(int i=0;i
当然,这假设您已将每行的长度正确设置为列数-您可能希望在阅读该行后验证这一点

一件应该引起怀疑的事情是这个内部循环:

for (int k = 0; k < temp.length(); k++) {
    wordSearch[i][j] = temp.charAt(k);
}
for(int k=0;k

这将覆盖相同的
wordSearch[i][j]
对于
temp
中的每个字符,使除最后一次迭代外的所有迭代都变得毫无意义。

puzzle.txt是什么样子的?如果不是太大,请将其发布到哪里发生此错误?您的意思是它应该运行不超过100次??是的;请发布一个示例input@Coupon22最后,出现了错误。我测试了它,它看到了ms将为代码的每一行运行,而不仅仅是我希望的十行。感谢您的澄清!这似乎解决了眼前的问题,但不幸的是,我现在在包含wordSearch[I][j]=temp.charAt(j)的行上有一个字符串索引越界异常;