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