- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个方法可以从字符网格中的单词数组中搜索单词。它从左到右、从右到左、从上到下、从下到上、垂直向上到左、垂直向上到右、垂直下到左、垂直下到右搜索。
当我注释掉除一个方向之外的所有方向时,例如,我试图找到一个对角线延伸的单词,它可以工作,但是当我尝试运行它时,所有方向都没有被注释掉,只有几个单词出现返回我正在尝试寻找的内容。
我要查找的单词列表是:
SCALA
JAVA
ALGOS
ALGORITHM
SLUG
SLUR
GOES
TURTLE
当我运行我的程序时,它找到了 SCALA 和 JAVA,但在尝试查找 ALGOS 后却给了我一个索引越界异常。然而,当我注释掉所有方向并搜索我知道 ALGOS 所在的方向时,它不会给我带来任何问题。
我的代码这样做有什么问题,我该如何修复它?谢谢。
public static String findWord(char[][]board, String word) {
int counter = 0;
for (int row = 0; row < board.length; row++) {
for (int col = 0; col < board[row].length; col++) {
// search to the right
if (col + (word.length()-1) <= board[row].length) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row][col+letters]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
} // end search to the right
// search to the left
if (col - (word.length()-1) >= 0) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row][col-letters]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
} // end search to the left
// search down
if (row + (word.length()-1) <= board[row].length) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row+letters][col]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
} // end search down
// search up
if (row - (word.length()-1) >= 0) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row-letters][col]) {
foundWord = false;
break;
}
}
if (foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
} // end search up
// search diagonal up to right
if((row - (word.length()-1) <= 0) && (col + (word.length()-1) <= board[row].length)) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row-letters][col+letters]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
}
// end search diagonal up to right
// search diagonal up to left
if((row - (word.length()-1) >= 0) && (col - (word.length()-1) >= 0)) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row-letters][col-letters]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
} // end search diagonal up to left
// search diagonal down to right
if((row + (word.length()-1) <= board[row].length) && (col + (word.length()-1) <= board[row].length)) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row+letters][col+letters]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
} // end search diagonal down to right
// search diagonal down to left
if((row + (word.length()-1) <= board[row].length) && (col - (word.length()-1) >=0)) {
boolean foundWord = true;
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) != board[row+letters][col-letters]) {
foundWord = false;
break;
}
}
if(foundWord) {
return word + " Found at: " + Arrays.toString(new int[] {row,col});
}
}
// end search diagonal down to left
}
}
return word + " not found";
} // end method findWord
最佳答案
看完之后,尝试改变它:
// search right
if (col + (word.length()-1) <= board[row].length) {
对此:
// search right
if (col + (word.length()-1) < board[row].length) {
编辑:
此外,更改此:
//search down
if (row + (word.length()-1) <= board[row].length) {
对此:
//search down
if (row + (word.length()-1) < board.length) {
这个:
// search diagonal up to right
对此:
if((row - (word.length()-1) <= 0) && (col + (word.length()-1) <= board[row].length)) {// search diagonal up to right
if((row - (word.length()-1) >= 0) && (col + (word.length()-1) < board[row].length)) {
这个:
// search diagonal down to right
if((row + (word.length()-1) <= board[row].length) && (col + (word.length()-1) <= board[row].length)
对此:
// search diagonal down to right
if((row + (word.length()-1) < board.length) && (col + (word.length()-1) <= board[row].length)
这个:
// search diagonal down to left
if((row + (word.length()-1) <= board[row].length) && (col - (word.length()-1) >=0)) {
对此:
// search diagonal down to left
if((row + (word.length()-1) < board.length) && (col - (word.length()-1) >=0)) {
最终编辑:只是想解释一下这里发生了什么。您的检查范围只是一些简单的疏忽。我总是犯这些小错误,而且它们是最难发现的。但是,请注意您的界限。检查是否 index <= board[row].length
允许索引成为数组的长度,这基本上不是数组中的索引(不包括关联数组!)。你也做了if (index <= 0 && ...)
在某一点上,这将从除第一行/列之外的所有点的搜索中消除整个方向。
关于java - 在java中的二维字符数组中查找单词。如果某些部分没有被注释掉,为什么我会遇到搜索问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303445/
所以`MKAnnotation's。有趣的东西。 我的问题: 注释的标题和副标题有什么区别?这对注释的视觉组件有何影响? MKPinAnnotationView 和 MKAnnotationView
我正在使用 JBoss 工具将 DB 模式反向工程到 POJO 中。具体来说,我在 hibernatetool ANT 任务中使用了 hbm2java 选项。在 hbm2java 选项下,您可以指定
假设我有这段文字: cat file /* comment */ not a comment /* another comment */ /* delete this * /* multiline
我明白,如果你///在类、字段、方法或属性上方 Visual Studio 将开始为您建立 XML 样式的注释。 但是,我在哪里可以为我的命名空间和/或库添加 XML 注释... 例如: .NET F
int API_VERSION = 21; @TargetApi(API_VERSION)在Android中用于指定该方法/类支持API_VERSION及以下。 我们是否可以镜像类似的东西,指定仅支持
Closed. This question needs to be more focused。它当前不接受答案。
假设我有一个界面如下。 public interface MyInterface{ /** * This method prints hello */ void sayHello();
我已将 Jboss 应用程序迁移到 WebSphere Liberty。我必须删除所有 Jboss 引用库。在这样做的同时,我在某些注释中面临问题。 Jboss 应用程序使用 @SecurityDom
在本教程中,您将了解 JavaScript 注释,为什么要使用它们以及在示例的帮助下如何使用它们。 JavaScript 注释是程序员可以添加的提示,以使代码更易于阅读和理解。JavaScri
我正在建立一个博客,为了发表评论,我有这个 CSS。 #comments { position:absolute; border: 1px solid #900; border-width: 1
我正在尝试在单元格中插入评论。我正在尝试按照代码进行评论,但它没有在创建的 excel 中显示评论。我正在创建 .xls 扩展名。 $objPHPExcel->getActiveSheet()->ge
我正在使用 TS 在 MarionetteJS 上编写项目,我想使用注释来注册路由。例如: @Controller class SomeController { @RouteMapping("so
我有一个应用程序可以在页面上生成大量注释。用户可以单击页面上的任意位置以创建快速注释(例如 Acrobat Pro)可以在一般 中使用一些 javascript 行添加和删除这些注释
是否有 JavaScript 注释? 当然 JavaScript 没有它们,但是是否有额外的库或建议的语言扩展,例如 @type {folder.otherjsmodule.foo} function
Java 中注解的目的是什么?我有一个模糊的想法,认为它们介于注释和实际代码之间。它们在运行时会影响程序吗? 它们的典型用法是什么? 它们是 Java 独有的吗?有 C++ 等价物吗? 最佳答案 注解
其实我们在 Ruby 基础语法 已经比较详细的介绍了 Ruby 语言中的注释 Ruby 解释器会忽略注释语句 注释会对 Ruby 解释器隐藏一行,或者一行的一部分,或者若干行。 Ruby 中的注
我正在 try catch VBA 注释。到目前为止,我有以下内容 '[^";]+\Z 它捕获以单引号开头但在字符串结尾之前不包含任何双引号的任何内容。即它不会匹配双引号字符串中的单引号。 dim s
有没有办法在'svn commit'上将提交注释添加到更改的文件中。有人告诉我有一种方法可以用 cvs 做到这一点,但我们使用 svn。目前,我们使用“$Revision”关键字将修订号添加到更改的文
我正在尝试通过 ManyToMany 注释自动对报告的结果进行排序 @OrderBy : /** * @ORM\ManyToMany(targetEntity="Artist", inversedB
我正在使用 JBoss 5 GA,我创建了一个测试 session bean 和本地接口(interface)。我创建了一个 servlet 客户端。我尝试使用 @EJB 将接口(interface)
我是一名优秀的程序员,十分优秀!