2016-01-26 69 views
-2

我想搜索在Java中的文字解謎的話。 搜索,如所述的是在水平,垂直和對角線。 我創建了一個數組,但我不知道如何創建一個字符串,並在我的字符串中搜索單詞。我需要知道如何獲得一個保留表格的所有值的字符串,以及如何能夠鍵入一個單詞並在此處進行搜索。搜索在多維數組的話,爪哇

我知道搜索的詞用的indexOf函數來完成,但我不知道如何執行它。 import java.util.Scanner;

public class main { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int IntegerPosition; 
     int IntegerPosition2; 
     String position=""; 
     String word=""; 
     Scanner s = new Scanner(System.in); 
     String content=""; 
     String[][] sopa = { 
       {"X","F","E","K","J","U","I","R","S","H"}, 
       {"Z","H","S","W","E","R","T","G","O","T"}, 
       {"B","R","A","B","F","B","P","M","V","U"}, 
       {"D","W","E","R","O","O","J","L","L","W"}, 
       {"U","T","O","N","I","R","O","B","C","R"}, 
       {"O","P","R","O","V","I","I","K","V","B"}, 
       {"N","I","Q","U","E","N","T","N","S","A"}, 
       {"O","V","U","L","R","O","S","S","O","T"}, 
       {"A","S","A","X","J","T","R","R","I","T"}, 
       {"R","K","M","E","P","U","B","O","T","A"} 
     }; 
     for (int i = 0; i < sopa[0].length; i++){ 
      for(int j = 0; j < sopa[i].length; j++){ 
       content += sopa[i][j]; 
      } 
      System.out.println(content); 
      content = ""; 
     } 
     System.out.println("Type the word you are looking for"); 
     word = s.next(); 

     for (int i = 0; i < sopa[0].length-1; i++){//t1.length 
      for(int j = 0; j < sopa[i].length-1; j++){ 


      } 
     } 
     System.out.println(content); 
     content = ""; 
    } 

} 
+0

表現出任何試圖將該自行解決,我們會盡量引導朝着正確的方向。 – Idos

+0

非常好的參考:http://stackoverflow.com/questions/4795383/how-to-traverse-though-a-2d-char-array-searching-for-words-in-java – user2004685

回答

0

首先,你應該聲明「找到一個詞」的含義。我想你想在每一行和每列中找到字母序列。那對角線呢?向後?環繞?

兩種解決方案浮現在腦海中:

  1. 使用字符串指數:
    • 建設的所有字符的字符串。這需要針對每個方向(水平,垂直,對角線)完成,但只有在向前搜索的搜索項顛倒後才能執行。爲了有效實施StringBuilder是你的朋友。
    • 使用String.indexOf找到索引術語的出現次數。最後,您必須從字符串位置計算行和列,並且如果不允許換行,請檢查該字是否跨越任何行/列邊界。
    • 我會用這個,如果我不得不尋找很多條款。
  2. 使用陣列
    • 還爲每個方向(水平,垂直,對角線)
    • 查找您的陣列中的檢索詞的第一個字母的出現次數(通過簡單的迭代)。請注意,當該術語不適合行/列時,您可以停止,因此對於6個字母的單詞,可以跳過最後5行/列。
    • 如果您發現錨點(即匹配字母),請檢查該詞的後續字母。取消不匹配,否則您找到了一個發生。

對於更成熟的配套實施,該Boyer-Moore algorithm可能會感興趣的。