2013-05-13 46 views
2
的陣列

所以我有以下字符串:狗「和」貓 我把它分解成一個數組名爲:數組1帶,仰望引號用繩子

{「d」,「O」, 'G',」」, '「', 'C', 'A',T」, '」'}

boolean works = false; 

for (int i=0; i < array1.length;i++){ 

    if (array1[i].equals("d"){ 
     if (array1[i+1].equals("o"){ 
      if(array1[i+2].equals("g"){ 
       if (array1[i+3].equals(" "){ 
        if (array1[i+4].equals("""){ //does work here 
        if (array1[i+5].equals("c"){ 
         if (array1[i+6].equals("a"){ 
          if (array1[i+7].equals("t"){ 
          works = true; 
          } 
         } 
        } 
        } 
       } 
      } 
     } 
    } 
} 

System.out.println(works); 

它在與報價等號不工作。有沒有人有任何想法?

+7

逃脫字符。請不要做這樣的事情。 – 2013-05-13 16:25:00

+3

使用反斜槓:「\」「' – 2013-05-13 16:25:21

+0

http://en.wikipedia.org/wiki/String_searching_algorithm#Single_pattern_algorithms – SLaks 2013-05-13 16:54:25

回答

2

我會盡量簡化你的代碼,例如,你可以寫

String s = "dog \"and\" cat"; 
boolean works = s.contains("dog \"cat"); 

這使得它更明顯的是,工作永遠是假的。

0

你有不明確的數據類型。

我假定您的array1char[]類型。如果是,那麼你應該有==比較在你的代碼(注意單引號「X」,其中x是要測試的字符):

if (array1[i] == 'd'){ 
    .... 
} 

如果數組是String[]類型,那麼你需要逃避「字符在比較中使用反斜槓:

if (array1[i+4].equals("\""){ //does work here 
    .... 
} 
0

您需要轉義」內的字符「。就像這樣:

(array1[i+4].equals("\"") 
0

{'d','o','g',' ','"','c','a',t','"'}這是一個字符數組 你需要下面的代碼 您不能等於Char相字符串。

boolean works = false; 
for (int i=0; i < array1.length;i++){ 
if (array1[i]=='d'){ 
    if (array1[i+1]=='o'){ 
     if(array1[i+2]=='g'){ 
      if (array1[i+3]==' '){ 
       if (array1[i+4]=='"'){ //does work here 
       if (array1[i+5]=='c'){ 
        if (array1[i+6]=='a'){ 
         if (array1[i+7]=='t'){ 
         works = true;` 
         } 
        } 
       } 
       } 
      } 
     } 
    } 
} 
0
boolean works = false; 
String[] pattern = { "d","o","g"," ","\"","c","a","t","\"" }; 

for (int i = 0; i < array1.length; i++) { 
    // Loop over the items in the pattern array, and check if they match array1 
    boolean inner = true; 
    for (int j = 0; j < pattern.length; j++) { 
     if (i + j >= array1.length) { 
      // Don't go beyond the end of array1 
      break; 
     } 
     if (!pattern[j].equals(array1[i+j])) { 
      // We found an item that doesn't match. 
      inner = false; 
      break; 
     } 
    } 
    if (inner) { 
     // All items matched 
     works = true; 
     break; 
    } 
} 

System.out.println(works);