Java扫描程序:获取“java.util.NoSuchElementException”错误,不确定原因

时间:2012-09-27 20:56:13

标签: java arrays

我正在编写一个从文本文件中扫描的单词搜索程序。文本文件包含两个整数(拼图的尺寸,在本例中为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);

              }
            }
        }

这是puzzle.txt:

  • 10 10
  • WVERTICALL
  • ROOAFFLSAB
  • ACRILIATOA
  • NDODKONWDC
  • DRKESOODDK
  • OEEPZEGLIW
  • MSIIHOAERA
  • ALRKRRIRER
  • KODIDEDRCD
  • HELWSLEUTH
  • 10
  • WEEK
  • 查找
  • RANDOM
  • SLEUTH
  • BACKWARD
  • VERTICAL
  • 对角
  • WIKIPEDIA
  • HORIZONTAL
  • 单词搜索

1 个答案:

答案 0 :(得分:3)

  

然而,扫描仪继续似乎继续通过文件并最终“超出范围”文件,即使根据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 < rows; i++) {
    String temp = scan.nextLine();
    for (int j = 0; j < columns; j++) {
        wordSearch[i][j] = temp.charAt(j);
    }
}

当然,这假设您已经正确地将每行的长度设置为列数 - 您可能希望在读取该行后验证该行。

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

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

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