每次通过代码时,我都需要将char []缩短一个字母。我正在使用的论点是hello和hel。它应该返回true false false。至少这是我认为应该回归的。我认为到目前为止我已经接近了:
private void doDountSubStringMatchRecursive(String target, String key){
char[] targetChar= target.toCharArray();//long one
char[] keyChar= key.toCharArray();//short one
for (int i = 0; i <=targetChar.length- keyChar.length; i++ ){
System.out.println(testHelper(targetChar , keyChar));
String recursive = targetChar.toString(); //Turns into a string
targetChar = recursive.substring(1).toCharArray();//moves my string starting point over by one and converts the char[]
System.out.println(targetChar.toString() + " " + keyChar.toString() );
}
}
private boolean testHelper(char[] targetChar , char[] keyChar){
boolean test = false;
for (int i=0; i <= keyChar.length - 1; i++){ // runs through the char[] and states the test
if (keyChar[i] == targetChar[i]) {
test = true;
} else {
return false;
}
}
return test;
}
这是我的输出:
true
[C@24c21495 [C@41d5550d
false
[C@1cc2ea3f [C@41d5550d
false
[C@40a0dcd9 [C@41d5550d
false
[C@1034bb5 [C@41d5550d
false
[C@7f5f5897 [C@41d5550d
false
[C@4cb162d5 [C@41d5550d
false
[C@11cfb549 [C@41d5550d
false
[C@5b86d4c1 [C@41d5550d
false
[C@70f9f9d8 [C@41d5550d
我现在不知道这是做什么的。是的,我知道我可以通过使用indexof(key)找到密钥的出现。
答案 0 :(得分:2)
目前还不清楚你的代码应该做什么,因为你没有真正明确地说明问题。但是,您应该立即修复一个错误:
targetChar.toString()
不符合您的想法。它为您提供了char数组对象的String表示(类似于“C @ 24c21495”),不将该数组解释为字符序列。如果您想要String
表示数组中的字符序列,那么您需要调用
String.valueOf(targetChar)
或
new String(targetChar)
将char[]
转换为更有用的String
。
此更改可能有助于您调试其余代码。
答案 1 :(得分:1)
首先,在java中,array.toString()
没用;你必须使用Arrays.toString(array)
。将您的代码更改为:
System.out.println(Arrays.toString(targetChar) + " " + Arrays.toString(keyChar) );
仅供参考,Josh Bloch认为这是java中的一个重大错误。我同意。