日期:2014-05-20 浏览次数:20855 次
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 不规则列表的数据起止判定
* @author jinxfei
*
*/
public class BGZList {
private static Random r=new Random(System.currentTimeMillis());
public static void main(String[] args) throws Exception{
List<Integer> targetList=createBGZList();
System.out.println("随机数组:\n"+targetList);
System.out.println("请输入起始值:\n");
BufferedReader r=new BufferedReader(new InputStreamReader(System.in));
int start=Integer.parseInt(r.readLine());
System.out.println("请输入终止值:\n");
int end=Integer.parseInt(r.readLine());
end-=start;
int startIndex=0,startPos=0;
int endIndex=0,endPos=0;
for(int i=0; i<targetList.size();i++){
Integer cur=targetList.get(i);
if (start>=0){
if (start>cur){
start-=cur;
continue;
}
startIndex=i+1;
startPos=start;
start=-1;
}else{
if (end>cur){
end-=cur;
continue;
}
endIndex=i+1;
endPos=end;
break;
}
}
System.out.println("开始于 "+startIndex+" 的 "+startPos+", 结束于 "+endIndex+" 的 "+endPos);
}
/**
* 创建一个随机长度(10-110)的list,list中的每一个数字也都是随机的(5-55),
*
* @return
*/
private static List<Integer> createBGZList(){
List<Integer> result=new ArrayList<Integer>();
int listLength=r.nextInt(100)+10;
for(int i=0; i<listLength;i++){
result.add(r.nextInt(50)+5);
}
return result;
}
}
------解决方案--------------------
写好了,可能不是很规范 ,但可以得到结果。考到java里面直接可以运行
package a;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static List<int[]> list = new ArrayList<int[]>();
public Test() {
int[] a = { 1, 2, 3 };
int[] b = { 4, 5, 6, 7, 8, 9, 10 };
int[] c = { 11, 12, 13, 14 };
list.add(a);
list.add(b);
list.add(c);
}
public int[] function(int x, int y) {
int[] returnBack = new int[4];
int[] a = get(x);
int[] b = get(y);
returnBack[0] = a[0];
returnBack[1] = a[1];
returnBack[2] = b[0];
returnBack[3] = b[1];
return returnBack;
}
public static int[] get(int x) {
int[] returnBack = new int[2];
int sum = 0;
int cout = 0;
for (int n = 0; n < list.size(); n++) {
sum = sum + (list.get(n)).length;
if (x <= sum && cout == 0) {
cout++;
returnBack[0] = n + 1;
for (int i = 0; i < (list.get(n)).length; i++) {
if (x == list.get(n)[i]) {
returnBack[1] = i + 1;
}
}
}
}
return returnBack;
}
public static void main(String[] args) {
Test test = new Test();
int[] aa = test.function(3, 14);
for (int i = 0; i < aa.length; i++) {
System.out.println(aa[i]);
}
}
}
------解决方案--------------------