所以我有以下字符串:dog“和”cat 我把它拆分成一个名为:array1 with,
的数组{'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);
它在带引号的等号上不起作用。有没有人有任何想法?
答案 0 :(得分:2)
我会尝试简化您的代码,例如您可以编写
String s = "dog \"and\" cat";
boolean works = s.contains("dog \"cat");
这使得作品永远是假的更加明显。
答案 1 :(得分:0)
您的数据类型不明确。
我认为您的array1
属于char[]
类型。如果是,那么你的代码中应该有==
个比较器(注意单引号'x',其中x是你正在测试的char):
if (array1[i] == 'd'){
....
}
如果数组的类型为String[]
,那么你需要在比较中使用反斜杠转义“字符:
if (array1[i+4].equals("\""){ //does work here
....
}
答案 2 :(得分:0)
你需要逃避“里面的角色”。就像这样:
(array1[i+4].equals("\"")
答案 3 :(得分:0)
{'d','o','g',' ','"','c','a',t','"'}
这是一个char数组
你需要下面的代码
你不能将字符串与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;`
}
}
}
}
}
}
}
}
答案 4 :(得分: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);