首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

帮忙写个步骤

2013-01-17 
帮忙写个方法有一数组里面存放的是有序的数字比如:[1,2,4,5,7,8,9]要求写一个方法把连续的数字放到一个数

帮忙写个方法
有一数组里面存放的是有序的数字比如:
[1,2,4,5,7,8,9]
要求写一个方法把连续的数字放到一个数组中。
得到的结果为:
[1,2]
[4,5]
[7,8,9]
[解决办法]

public static int[][] subArray(int[] a){
       int len = a.length;
       int outer =0, inner =0;
       int[][] abc = new int[len][];
       int[]  temp = new int[len];
       int cate=0;
       while(outer< len)
       {
           int i=0;
           inner = outer;
           temp[i++]= a[inner];
           while((a[inner+1]- a[inner] ==1) && (inner+1)< len)
           {
               temp[i++] = a[inner+1];
               inner++;
           }
           abc[cate]= new int[i];
           cate++;
           outer = inner +1;  
      }
       return abc;
   }
[解决办法]
1楼代码运行时报越界,改了下:

import java.util.Arrays;
public class SplitArraysCsdn
{
public static void main(String[] args)
{
int[] in={1,2,4,5,7,8,9};
int[][] out=subArray(in);
for(int[] b:out)//显示结果
{
System.out.println(Arrays.toString(b));
}
}
//输入数组必须由小到大排序。
//
public static int[][] subArray(int[] a)
{
       int len = a.length;
       int outer =0, inner =0;
       int[][] abc = new int[len][];
       int[]  temp = new int[len];
       int cate=0;
       while(outer< len)
       {
int i=0;
inner = outer;
temp[i++]= a[inner];
while(((inner+1)< len)&&(a[inner+1]- a[inner] ==1))//换了一下顺序
{
temp[i++] = a[inner+1];
inner++;
}
//abc[cate]= new int[i];
abc[cate]= Arrays.copyOf(temp,i);//去掉无用元素后放入二唯数组。
cate++;
outer = inner +1;
       }
       abc=Arrays.copyOf(abc,cate);//去掉多余的元素。
       return abc;
}
}

------解决方案--------------------


楼主这个方法最好别用。
你把它分成多个数组再去处理,这个过程效率很低啊。分开能做的事情,不分开也能做啊。
不如想想不分该怎么做吧。
如果你纯粹就是想把它分成多个数组,不做其他操作,那我就不说什么了。
[解决办法]
LZ,正常来说你这数据应该是在后台查询吧
直接用sql语句查询结果,返回3行记录,分别为连续的最大,最小值不行吗?

热点排行