- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在编写一个填字游戏解算器,除了 1 个故障外,我几乎 98% 的代码都能正常工作。我有一个循环,它从文件中读取 1 个单词,然后将该字符串与一个字符数组进行比较,以查找该字符串在数组中的位置。到目前为止,循环读取了所有单词并找到了它们的位置,但我的问题是它跳过了我列表中的 3 个单词。我知道这些词在 char 数组中,但由于某种原因它们没有被拾取。有任何想法吗?
这是我的代码:
import java.io.File;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception{
File file = new File("puzzle.txt");
Scanner sc = new Scanner(file);
int row = sc.nextInt();
int col = sc.nextInt();
sc.nextLine();
//Make an array to hold the puzzle
char[][] puzzle = new char[row][col];
//Read in the strings from the file into the array.
for (int i=0; i<row; i++){
String getChar = (new String(sc.next()));
for(int j = 0;j<col; j++){
puzzle[i][j] = getChar.charAt(j);
}
}
//Read the number of words and move to the next line
int numwords = sc.nextInt();
sc.nextLine();
//look for each word
for(int i=0; i<numwords; i++){
String word = new String();
word = sc.nextLine();
System.out.printf("This is word: %s\n", word);
//arrays to hold the direction.
int [] movx ={-1, -1, -1, 0, 0, 1, 1, 1};
int [] movy ={-1, 0, 1, -1, 1, -1, 0, 1};
//this variable will hold if we found or not the string in the puzzle
boolean found = false;
//find the words in the puzzle
for(int m = 0; m < puzzle.length; m++) {
for(int n = 0; n < puzzle[0].length; n++) {
if(puzzle[m][n] == word.charAt(0)){
for (int o = 0; o < 8; o++){
if(check(m, n, word, puzzle, movx[o], movy[o])){
System.out.printf("%s found at position (%d, %d)\n\n", word, m, n);
found = true;
break;
}
}
}
}
}
if (!found){
System.out.printf("%s was not found\n\n", word);
}
}
//Close the scanner
sc.close();
}
//This is your generic-direction function
public static boolean check(int row, int col, String word, char[][] puzzle, int offsetx, int offsety){
//start with the current position
int x = row;
int y = col;
for (int i = 0; i < word.length(); i++){
char c = word.charAt(i);
//Is not equal
if (puzzle[x][y] != c) return false;
x += offsetx;
y += offsety;
//check the boundaries, if we go out then we didn't find the word;
if (x < 0 || x >= puzzle.length || y < 0 || y >= puzzle[x].length) return false;
}
return true;
}
}
(编辑区域)
根据我对 print 语句的诊断,当 i 为 3、8 和 9 时,单词搜索找不到单词。我相信这是在这个循环之后:
//find the words in the puzzle
for(int m = 0; m < puzzle.length; m++)
因为在这个循环之前,我之前的循环遍历了每个单词。 word 被传递到这个循环内的循环中。所以它一直通过我对数组中每个点的所有检查,然后即使它在拼图中也只是作为 false 通过。
(/编辑区域)
在这个循环之前,我测试了
我正在阅读的文件:
10 10
WVERTICALL
ROOAFFLSAB
ACRILIATOA
NDODKONWDC
DRKESOODDK
OEEPZEGLIW
MSIIHOAERA
ALRKRRIRER
KODIDEDRCD
HELWSLEUTH
10
WEEK
FIND
RANDOM
SLEUTH
BACKWARD
VERTICAL
DIAGONAL
WIKIPEDIA
HORIZONTAL
WORDSEARCH
这是它打印的内容(WEEK 不在拼图中):
This is word: WEEK and this is i 0
WEEK was not found
This is word: FIND and this is i 1
FIND found at position (1, 4)
This is word: RANDOM and this is i 2
RANDOM found at position (1, 0)
This is word: SLEUTH and this is i 3
SLEUTH was not found
This is word: BACKWARD and this is i 4
BACKWARD found at position (1, 9)
This is word: VERTICAL and this is i 5
VERTICAL found at position (0, 1)
This is word: DIAGONAL and this is i 6
DIAGONAL found at position (8, 6)
This is word: WIKIPEDIA and this is i 7
WIKIPEDIA found at position (9, 3)
This is word: HORIZONTAL and this is i 8
HORIZONTAL was not found
This is word: WORDSEARCH and this is i 9
WORDSEARCH was not found
这些是它找不到的词:
SLEUTH is at position (9,4)
HORIZONTAL is at position (9,0)
WORDSEARCH is at position (0,0)
非常感谢任何提示、技巧或想法!
最佳答案
在你的检查方法中:
//check the boundaries, if we go out then we didn't find the word;
if (x < 0 || x >= puzzle.length || y < 0 || y >= puzzle[x].length) return false;
正在检查您在增加 x,y 值后是否超出了拼图边界。问题在于它找不到的三个单词,它找到了最后一个字母,递增你的计数器,然后确定你已经超出了拼图的边缘并返回 false,即使它已经找到了最后一个字母。
尝试将条件移动到循环的开头,如下所示:
for (int i = 0; i < word.length(); i++){
//check the boundaries, if we go out then we didn't find the word;
if (x < 0 || x >= puzzle.length || y < 0 || y >= puzzle[x].length) return false;
char c = word.charAt(i);
//Is not equal
if (puzzle[x][y] != c) return false;
x += offsetx;
y += offsety;
}
关于java - 循环并不能处理所有事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128624/
我是 javascript 的新手(今天开始弄乱它)。 我正在尝试更改名为“bar”的元素(div)的高度。条形图将成为图表的一部分。 我可以毫无问题地将按钮连接到更改栏高度的函数。一切正常,除了条形
错误 -> “UIVIew”没有名为“addSubView”的成员 override func viewDidLoad() { super.viewDidLoad() // Do an
我在命令行工具项目中复制并粘贴了 main.swift 下面链接中的代码。 How do you use CGEventTapCreate in Swift? 它构建没有错误,但是当我运行时, gua
我在尝试编译我的代码时遇到以下错误。 ERROR! ..\myCode\CPOI.cpp:68:41: error: cannot dynamic_cast 'screenType' (of type
我正在尝试将多个字符串连接到一个我已为其分配内存的字符串指针。这是一个例子: char *finalNumString = malloc(sizeof(char)*1024); finalNumStr
我在使用 dup2() 和 pipe() 时遇到问题。 当我尝试将管道的写入端 dup2 到 STDOUT_FILENO 时,我收到了 EBADF。 我用 gdb 在 dup2(pout[1], ST
首先,我应该说我运行的是 Windows 7。 因此,今天早上我尝试像往常一样从我的存储库中提取数据,但我做不到。我得到了错误: The authenticity of host 'github.co
刚开始在虚拟环境中运行Python,乱用Django,无法激活虚拟环境。 花了最后 4 个小时尝试在本地终端/VS 代码上激活虚拟环境 (venv),但没有成功。 避免使用“sudo pip inst
Tidyverse 的粉丝经常给出使用小标题而不是数据框的几个优点。它们中的大多数似乎旨在保护用户免于犯错误。例如,与数据框不同,小标题: 不需要 ,drop=FALSE不从数据中删除维度的论据。 不
我一直在对 Elm 应用程序进行 docker 化时遇到问题。据我所知,我已经创建了一个完整且有效的 Docker 文件……但它不起作用。 我会解释的。 所以我的脚本在 3 个文件中运行。 首先是启动
我可以在 Controller 中使用@Autowired,例如 @RestController public class Index { @Autowired HttpServlet
我定义了一个方法和一个函数: def print(str:String) = println val intToString = (n:Int) => n.toString 现在我想创作它们。 我的问
当我控制台单独记录变量“pokemons”时,它确实返回一个数组。但是当我尝试映射它时,出现错误: TypeError: pokemons.map is not a function 我的代码: im
每当我尝试在 Python 解释器中导入 smtplib 时,都会收到此错误: ImportError: cannot import name fix_eols 我该如何解决这个问题? 编辑:这是完整
我正在使用 Meteor.js 开发一个项目,但在使用 Handlebar 时遇到了一些问题:我想检索集合的最后一项,并显示字段:其中包含 html 的文本: 这是我的javascript代码: Te
你好,我想使用 Service 实现 GestureDetector 但是我有这个错误The method onTouchEvent(MotionEvent) of type GestureServi
我正在尝试在 Controller bean 中 Autowiring 接口(interface) 在我放置的上下文配置文件中 和 我的 Controller 类是 @Controller pub
我试图在 mainwindow.cpp 中包含 QtSvg,但是当我编译时它说无法打开包含文件:QtSvg。我已经在我的 *.pro 文件中添加了这个(QT += svg)。我可以知道可能是什么问题吗
鉴于以下 PostgreSQL 代码,我认为这段代码不容易受到 SQL 注入(inject)攻击: _filter 'day' _start 1 _end 10 _sort 'article_name
我想执行以下操作。这在 MySQL 中是非法的。 PostGRESQL 中关联的 CTE(“with”子句)有效。这里的假设是 MySQL 中的子查询不是完全限定的 CTE。 请注意:这个查询显然非常
我是一名优秀的程序员,十分优秀!