我的String Buffer有“_ @”。 。我有二进制搜索方法,为char'返回false'。'。我找不到如何检查二进制搜索中的特殊字符。请帮助找出这个问题。
答案 0 :(得分:3)
public static void main(String[] args) {
StringBuffer b = new StringBuffer();
b.append(" _ @ .");
boolean isValid = false;
isValid = isValueThere(b, '.');
System.out.print(isValid);
}
和isValueThere(b, '.');
返回true。
答案 1 :(得分:1)
如果我错了,请纠正我,但二进制搜索用于排序数组。
您正尝试对字符数组_ @ .
执行二进制搜索
就ASCII码而言,如下所示:[32][95][32][64][32][46]
。
So, when you call your function:
Low: 0 - Middle: 2 - High: 5
Seach: 46 - Actual: 32
Low: 3
Low: 3 - Middle: 4 - High: 5
Seach: 46 - Actual: 32
Low: 5
Low: 5 - Middle: 5 - High: 5
Found!!!
true
但是,当您取出空格并在"_@."
Low: 0 - Middle: 1 - High: 2
Seach: 46 - Actual: 64
High: 0
Low: 0 - Middle: 0 - High: 0
Seach: 46 - Actual: 95
High: -1
Not found!!!
false
总结:
如果你完全确定你将在排序的数组上运行搜索,那么这没关系。
但是,就像你的情况一样,如果你不能保证你已经排序了数组,那么就不要使用二进制搜索。