2

所以我有以下字符串:狗“和”猫我把它分成一个名为:array1 的数组,

{'狗猫','”'}

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);

它不适用于引号。有没有人有任何想法?

4

5 回答 5

2

我会尝试简化您的代码,例如您可以编写

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

这使得作品永远是错误的变得更加明显。

于 2013-05-13T16:27:45.703 回答
0

您有不明确的数据类型。

我假设你array1的类型是char[]. 如果是,那么您==的代码中应该有比较器(注意单引号 'x' 其中 x 是您正在测试的字符):

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

如果数组是 type String[],那么您需要在比较中使用反斜杠转义 " 字符:

if (array1[i+4].equals("\""){ //does work here
   ....
}
于 2013-05-13T16:29:37.490 回答
0

您需要转义“”中的“字符。像这样:

(array1[i+4].equals("\"") 
于 2013-05-13T16:30:13.227 回答
0

{'d','o','g',' ','"','c','a',t','"'}这是您在代码下方需要的 char 数组 您不能将 Char 与 String 相等。

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;`
                      }
                    }
                 }
              }
           }
        }
    }
}
于 2013-05-13T16:33:18.447 回答
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);
于 2013-05-13T16:33:46.447 回答