caodegao 于 2016.02.03 17:12 提问

``````    输入2：得到3；
输入8：找不到返回null；
``````

12个回答

caodegao   2016.02.06 09:32

public static Integer isUpSearch(List orders, int des, boolean isUp) {
int size = orders.size();
for (int i = size; i >= 0; i--) {

``````    }
return isUp ? upLoop(orders, des) : downLoop(orders, des);
}

private static Integer downLoop(List<Integer> orders, int des) {
int size = orders.size();
for (int i = (size - 1); i >= 0; i--) {
if (des > orders.get(i)) {
return orders.get(i);
}
}
return null;
}

``````
caozhy      2016.02.03 17:53
`````` 既然是有序序列，那么可以用二分查找，大概的代码如下：
int start = 0;
int end = orders.length() - 1;
while (start != end)
{
pos = (end - start) / 2;
if (orders.get(pos) < find)
{
start = pos + 1;
}
else
{
end = pos;
}
}
if (pos == orders.length() - 1) return null;
return pos + 1;
``````
wojiushiwo945you      2016.02.03 21:58

`````` import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class OrderTest {
public static void main(String[] args) {
Set orders = new HashSet();
System.out.println(getLatestLargerNumber(orders,2));
System.out.println(getLatestLargerNumber(orders,8));
System.out.println(getLatestLargerNumber(orders,6));
}

//查找第一个大等于number的数
public static Integer getLatestLargerNumber(Set<Integer> list,int number){
//集合为空或者只有一个元素时返回空
if(list==null||list.size()==0){
return null;
}

//先对Set集合进行排序
Object[] numbers = (Object[]) list.toArray();
Arrays.sort(numbers);

Integer value = null;
int length = numbers.length;
for(int i =0;i<length;i++){
int current = (Integer)numbers[i];
//找到number,且它不是最后一个元素，那么i+1位置处的值一定是第一个大于number的数
if(current==number){
if(i+1<length){
value = (Integer)numbers[i+1];
}
break;
}

//找不到number时，就找第一个比其大的元素
if(current>number){
value= current;
break;
}
}

return value;
}
}

``````

rui888      2016.02.04 09:35

`````` public static void main(String[] args) {
Set orders = new HashSet();
List items = new ArrayList(new TreeSet(orders));
Integer needFound = 2;
// 输入2：得到3；
Integer x = (Integer) (items.indexOf(needFound) < items.size() - 1 ? items.get(items.indexOf(needFound)+1)
: null);
System.out.println("输入2： 测试结果-->" + x);
// 输入8：找不到返回null；
needFound = 8;
x = (Integer) (items.indexOf(needFound) < items.size() - 1 ? items.get(items.indexOf(needFound)+1) : null);
System.out.println("输入8：测试结果-->" + x);
}
``````
rui888      2016.02.03 17:35

xionglangs   2016.02.04 12:12

public static void main(String[] args) {
Set set = new TreeSet();
Scanner sc = new Scanner(System.in);
System.out.println("输入查询的数");
int id = sc.nextInt();
id = DriveNetMainWindow.shuju(set, id);
if (id == 0) {
System.out.println("找不到返回null");
} else {
System.out.println("得到"+id);
}
}

``````public static int shuju(Set<Integer> set, int id) {
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
int i = it.next();
if (i - id > 0) {
return i;
}
}
return 0;
}
``````
lm_whales   2016.02.07 21:54

lm_whales   2016.02.07 21:54

lm_whales   2016.02.07 21:55

sinat_31535993   2016.02.03 17:33

/**********************************************************  输入一个数，求这个数范围内的奇数和偶数的和  . QQ139767**********************************************************/#include void main(){ int a=0,b=0,c=1,d;  pri

#include int main() { int i,j,x,k=10,a[11]={2,5,6,8,12,13,15,17,19,22}; scanf("%d",&x); for(i=0;i<k&&a[i]<x;i++) j=i; for(j=k;j>i;j--) a[j]=a[j-1]; a[j]=x; for(i=0;i<=k;i++)
3:输入一个整数，求这个数的阶乘
#include mian() { int fac=1; int n;         scanf("%d",&n);        if(n==1||n==0)                         // 若这个数为1或0，则输出1.     {   printf("所求数字的阶乘为1"); } if(n>1) { while(n>1) { fac=

#include void fun(int m, int k, int xx[]) { int i, j; int p = 0; for(i=m+1;i>m;i++) { for(j=2;j<i;j++) { if(i%j==0) break; } if(j == i) xx[p++] = i; if(p>k) break; } } main()