我目前正在为java 专家简介写一个面试问题。这里是:
考虑到这段代码:
清单 1
package com.example;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Searching {
public static void main(String[] args) {
int input = Integer.valueOf(args[0]);
String[] strings = {"1", "2", "4", "8", "16", "32", "64", "128"};
List<Integer> integers = new ArrayList<Integer>();
for (String s : strings) {
integers.add(Integer.valueOf(s));
}
System.out.println("index of "+input+" is:"+Collections.binarySearch(integers, input, cmp));
}
static Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer i, Integer j) {
return i < j ? -1 : (i == j ? 0 : 1);
}
};
}
然后使用此 cmd 行编译此代码
清单 2
javac com/example/Searching.java
并使用此命令行运行
清单 3
java com/example/Searching 128
问题一:
执行清单 3 产生:
index of 128 is:-8
你能解释一下这个输出吗?
问题 B:
考虑到这一点
java com/example/Searching 32
输出是
index of 32 is:5
你能解释一下这个输出吗?
问题 C:
假设您有一个 JRE 1.6、一个 shell 和一个文本编辑器。您将更改为清单 1 和/或清单 2 和/或清单 3 以产生此输出:
index of 128 is:7
备注:你改变的越少越好。
我的问题是:
- 你对这些问题的回答是什么?
- 如何改进它?