假如 byte result[] = new byte[240]; 
result[0] = 0; 
result[1] = 0; 
result[2] = 4; 
result[3] = 3; 
result[4] = 5; 
result[5] = 8; 
result[6] = 4; 
result[7] = 0; 
result[8] = 0; 
result[9] = 0; 
result[10] = 0; 
result[11] = 2; 
result[12] = 0; 
result[13] = 3; 
result[14] = 5; 
result[15] = 5; 
result[16] = 0; 
result[17] = 0; 
result[18] = 0; 
result[19] = 0; 
result[20] = 0; 
result[21] = 0; 
result[22] = 2; 
result[23] = 0; 
result[24] = 3; 
result[25] = 9; 
result[26] = 9; 
result[27] = 5; 
result[28] = 9; 
result[29] = 0; 
result[30] = 0; 
result[31] = 0; 
result[32] = 0; 
result[33] = 0; 
result[34] = 0; 
result[35] = 2; 
result[36] = 0; 
result[37] = 8; 
result[38] = -39; 
result[39] = 6; 
result[40] = 9; 
result[41] = 1; 
result[42] = 6; 
result[43] = 0; 
result[44] = 0; 
result[45] = 0; 
result[46] = 0; 
result[47] = 0; 
result[48] = 0; 
result[49] = 2; 
result[50] = 0; 
result[51] = 3; 
result[52] = 6; 
result[53] = 4; 
result[54] = 6; 
result[55] = 7; 
result[56] = 0; 
result[57] = 0; ......
等等

就如result[2]到result[6] 我想把这中间的过滤 
然后取出 
result[11] 到result[15]中间的值 
result[22] 到result[28]中间的值 
result[35] 到result[42]中间的值 
result[49] 到result[55]中间的值 等等
... 
规律也就是 除去2-6 其余的11-15 
或者22-28 
或者35-42 也就是说. 
result[11]=2; 
result[12]=0; result[22]=2; 
result[23]=0; result[35]=2; 
result[36]=0; 每组有数据的前两个值
都是2,0,然后再是别的数据
有就是说.
除了前面2-6
中间相隔一个一个0是有效的
其他的0或许都得过滤
.... 
中间都是0000000 希望好心人
会的人
帮小弟想想办法
感激不尽
小弟初学基础不好.
希望高手赐教!!

解决方案 »

  1.   


    就是怎么取出0到240之间result[11] 到result[15]中间的值 
    result[22] 到result[28]中间的值 
    result[35] 到result[42]中间的值 
    result[49] 到result[55]中间的值 等等 ..
      

  2.   

    package zjtest;public class Test1 { public static void main(String args[]) {
    // init
    byte result[] = new byte[240];
    result[0] = 0;
    result[1] = 0;
    result[2] = 4;
    result[3] = 3;
    result[4] = 5;
    result[5] = 8;
    result[6] = 4;
    result[7] = 0;
    result[8] = 0;
    result[9] = 0;
    result[10] = 0;
    result[11] = 2;
    result[12] = 0;
    result[13] = 3;
    result[14] = 5;
    result[15] = 5;
    result[16] = 0;
    result[17] = 0;
    result[18] = 0;
    result[19] = 0;
    result[20] = 0;
    result[21] = 0;
    result[22] = 2;
    result[23] = 0;
    result[24] = 3;
    result[25] = 9;
    result[26] = 9;
    result[27] = 5;
    result[28] = 9;
    result[29] = 0;
    result[30] = 0;
    result[31] = 0;
    result[32] = 0;
    result[33] = 0;
    result[34] = 0;
    result[35] = 2;
    result[36] = 0;
    result[37] = 8;
    result[38] = -39;
    result[39] = 6;
    result[40] = 9;
    result[41] = 1;
    result[42] = 6;
    result[43] = 0;
    result[44] = 0;
    result[45] = 0;
    result[46] = 0;
    result[47] = 0;
    result[48] = 0;
    result[49] = 2;
    result[50] = 0;
    result[51] = 3;
    result[52] = 6;
    result[53] = 4;
    result[54] = 6;
    result[55] = 7;
    result[56] = 0;
    result[57] = 0; /** ********************************** */
    int i = 0;
    boolean isStart = false;
    while (i < result.length - 1) {
    if (!isStart) {
    if (result[i] != 0) { System.out.print(result[i] + " ");
    isStart = true;
    }
    } else {
    if (result[i] == 0 && result[i + 1] == 0) {
    isStart = false;
    System.out.println();
    } else {
    System.out.print(result[i] + " ");
    }
    } if (i + 1 == result.length - 1) {
    if (result[i] != 0 || (result[i] == 0 && result[i + 1] != 0)) {
    System.out.print(result[i + 1]);
    }
    }
    i++;
    } }
    }
    你看一下,希望能够对你有启发。
      

  3.   

    int i = 0;
    // 是否已经开始计数一组数据
    boolean isStart = false;
    while (i < result.length - 1) {
    if (!isStart) {// 尚未开始
    if (result[i] != 0) {
          // 找到第一个
          System.out.print(result[i] + " ");
         isStart = true;
            }
    } else {// 已经开始计数
    if (result[i] == 0 && result[i + 1] == 0) {
                          // 遇见两个连续的0视为一组数据的结束
    // 更改开始标志,已经结束,下一组尚未开始
    isStart = false;
    System.out.println();
    } else {//尚未结束
    System.out.print(result[i] + " ");
    }
    }//看看最后一个位置的内容是否应该输出,因为while循环的终止条件没有判断最后一个
    if (i + 1 == result.length - 1) {
    if (result[i] != 0 || (result[i] == 0 && result[i + 1] != 0)) {
    System.out.print(result[i + 1]);
    }
    }
    i++;
    }哎呀,缩紧什么的都乱了,不好意思哦。
    这段代码写的也不是很好,因为~~我饿了,呵呵。
    方法不止一种,我只是抛砖引玉,希望……呵呵
      

  4.   

    运行一下。最好Debug跟一下代码。我想至少应该对你有所帮助。单纯读这些字母确实很容易犯困的~~加油。
      

  5.   


    若是如此,只需要将数据开始时候的判断条件稍作更改就好了。原来的是
    if (result[i] != 0) {
    ……
    }
    改为
    if (result[i] == 2) {
    ……
    }
      

  6.   

    这事我做的,只以2、0判断开始,以0判断结束,不知道我理解的是否正确。 public static void main(String[] args) {
    int[] result=new int[58];
    result[0] = 0; 
    result[1] = 0; 
    result[2] = 4; 
    result[3] = 3; 
    result[4] = 5; 
    result[5] = 8; 
    result[6] = 4; 
    result[7] = 0; 
    result[8] = 0; 
    result[9] = 0; 
    result[10] = 0; 
    result[11] = 2; 
    result[12] = 0; 
    result[13] = 3; 
    result[14] = 5; 
    result[15] = 5; 
    result[16] = 0; 
    result[17] = 0; 
    result[18] = 0; 
    result[19] = 0; 
    result[20] = 0; 
    result[21] = 0; 
    result[22] = 2; 
    result[23] = 0; 
    result[24] = 3; 
    result[25] = 9; 
    result[26] = 9; 
    result[27] = 5; 
    result[28] = 9; 
    result[29] = 0; 
    result[30] = 0; 
    result[31] = 0; 
    result[32] = 0; 
    result[33] = 0; 
    result[34] = 0; 
    result[35] = 2; 
    result[36] = 0; 
    result[37] = 8; 
    result[38] = -39; 
    result[39] = 6; 
    result[40] = 9; 
    result[41] = 1; 
    result[42] = 6; 
    result[43] = 0; 
    result[44] = 0; 
    result[45] = 0; 
    result[46] = 0; 
    result[47] = 0; 
    result[48] = 0; 
    result[49] = 2; 
    result[50] = 0; 
    result[51] = 3; 
    result[52] = 6; 
    result[53] = 4; 
    result[54] = 6; 
    result[55] = 7; 
    result[56] = 0; 
    result[57] = 0;
    for(int i=0;i<result.length;i++){
    if(result[i]==2 && result[i+1]==0){
    System.out.print("result["+ i +"]="+result[i]+",");
    while(true){
    System.out.print("result["+ ++i +"]="+result[i]);
    if(result[i+1]==0){
    System.out.println();
    break;
    }else{
    System.out.print(",");
    }
    }
    }
    }
    }
    这是显示结果:
    result[11]=2,result[12]=0,result[13]=3,result[14]=5,result[15]=5
    result[22]=2,result[23]=0,result[24]=3,result[25]=9,result[26]=9,result[27]=5,result[28]=9
    result[35]=2,result[36]=0,result[37]=8,result[38]=-39,result[39]=6,result[40]=9,result[41]=1,result[42]=6
    result[49]=2,result[50]=0,result[51]=3,result[52]=6,result[53]=4,result[54]=6,result[55]=7我的数组只列出LZ列出的58个值
      

  7.   

    楼上的程序有所不妥。
    那么。假如说,数组中出现2020203这样的数据,如何处理呢?按照你的程序,将其分成两组:202和203
    我现在也有些不懂,LZ究竟希望这样的数据如何分组?而且,如果在数组最末出现20,只要LZ数据补上一句result[239] = 2;楼上的程序必然出现数组下标越界的问题。能够引发此种情况的情形不只这个。
      

  8.   

    谢谢你的指正。
    第一条我是开始没理解,我以为只要除了第二位的0剩下的都不要呢
    第二条我是真没考虑到,还是新手经验不足。
    下面是我改后的代码,希望得到指正 public static void main(String[] args) {
    int[] result=new int[58];
    result[0] = 0; 
    result[1] = 0; 
    result[2] = 4; 
    result[3] = 3; 
    result[4] = 5; 
    result[5] = 8; 
    result[6] = 4; 
    result[7] = 0; 
    result[8] = 0; 
    result[9] = 0; 
    result[10] = 0; 
    result[11] = 2; 
    result[12] = 0; 
    result[13] = 3; 
    result[14] = 5; 
    result[15] = 5; 
    result[16] = 0; 
    result[17] = 0; 
    result[18] = 0; 
    result[19] = 0; 
    result[20] = 0; 
    result[21] = 0; 
    result[22] = 2; 
    result[23] = 0; 
    result[24] = 3; 
    result[25] = 9; 
    result[26] = 9; 
    result[27] = 5; 
    result[28] = 9; 
    result[29] = 0; 
    result[30] = 0; 
    result[31] = 0; 
    result[32] = 0; 
    result[33] = 0; 
    result[34] = 0; 
    result[35] = 2; 
    result[36] = 0; 
    result[37] = 8; 
    result[38] = -39; 
    result[39] = 6; 
    result[40] = 9; 
    result[41] = 1; 
    result[42] = 6; 
    result[43] = 0; 
    result[44] = 0; 
    result[45] = 0; 
    result[46] = 0; 
    result[47] = 0; 
    result[48] = 0; 
    result[49] = 2; 
    result[50] = 0; 
    result[51] = 3; 
    result[52] = 0; 
    result[53] = 4; 
    result[54] = 6; 
    result[55] = 0; 
    result[56] = 0; 
    result[57] = 2;
    int length=result.length ;
    for(int i=0;i<length;i++){
    if(result[i]==2 && (i+1)<length && result[i+1]==0 ){
    System.out.print("result["+ i +"]="+result[i]+",");
    while(++i<length){
    System.out.print("result["+ i +"]="+result[i]);
    if((i+1)<length && result[i+1]==0){
    if((i+2)<length && result[i+2]==0){
    System.out.println();
    break;
    }
    }else{
    System.out.print(",");
    }
    }
    }
    }
    }
    PS:如果最后一位是2我给舍去了,不知道是不是合LZ的意思
      

  9.   

        byte result[] = new byte[60]; //以60个数据为例
          result[0] = 2;
          result[1] = 0;
          result[2] = 4;
          result[3] = 3;
          result[4] = 5;
          result[5] = 8;
          result[6] = 4;
          result[7] = 0;
          result[8] = 0;
          result[9] = 0;
          result[10] = 0;
          result[11] = 2;
          result[12] = 0;
          result[13] = 3;
          result[14] = 5;
          result[15] = 5;
          result[16] = 0;
          result[17] = 0;
          result[18] = 0;
          result[19] = 0;
          result[20] = 0;
          result[21] = 0;
          result[22] = 2;
          result[23] = 0;
          result[24] = 3;
          result[25] = 9;
          result[26] = 9;
          result[27] = 5;
          result[28] = 9;
          result[29] = 0;
          result[30] = 0;
          result[31] = 0;
          result[32] = 0;
          result[33] = 0;
          result[34] = 0;
          result[35] = 2;
          result[36] = 0;
          result[37] = 8;
          result[38] = -39;
          result[39] = 6;
          result[40] = 9;
          result[41] = 1;
          result[42] = 6;
          result[43] = 0;
          result[44] = 0;
          result[45] = 0;
          result[46] = 0;
          result[47] = 0;
          result[48] = 0;
          result[49] = 2;
          result[50] = 0;
          result[51] = 3;
          result[52] = 6;
          result[53] = 4;
          result[54] = 6;
          result[55] = 7;
          result[56] = 0;
          result[57] = 0;
          result[58] = 2;
          result[59] = 0;
          byte pre = 0; //前一数据
          byte cur = result[0];//当前数据
          byte next = 0;//下一数据
          int i = 1;
          while (true) {
             next = result[i];
             if (cur != 0 || (pre != 0 && cur == 0 && next != 0)) //如果当前值非0 或  "中间相隔一个一个0"
                System.out.println("result[" + (i - 1) + "]=" + cur);         if (i >= result.length -1) { //边界数据,如果倒数第2个非0,则最后一个不管何值都符合输出
                if(cur !=0)
                   System.out.println("result[" + (i - 1) + "]=" + next) ;
                break;
             }         pre = cur;
             cur = next;
             i++;      }
      

  10.   

    修正一下: byte result[] = new byte[60];
          result[0] = 2;
          result[1] = 0;
          result[2] = 4;
          result[3] = 3;
          result[4] = 5;
          result[5] = 8;
          result[6] = 4;
          result[7] = 0;
          result[8] = 0;
          result[9] = 0;
          result[10] = 0;
          result[11] = 2;
          result[12] = 0;
          result[13] = 3;
          result[14] = 5;
          result[15] = 5;
          result[16] = 0;
          result[17] = 0;
          result[18] = 0;
          result[19] = 0;
          result[20] = 0;
          result[21] = 0;
          result[22] = 2;
          result[23] = 0;
          result[24] = 3;
          result[25] = 9;
          result[26] = 9;
          result[27] = 5;
          result[28] = 9;
          result[29] = 0;
          result[30] = 0;
          result[31] = 0;
          result[32] = 0;
          result[33] = 0;
          result[34] = 0;
          result[35] = 2;
          result[36] = 0;
          result[37] = 8;
          result[38] = -39;
          result[39] = 6;
          result[40] = 9;
          result[41] = 1;
          result[42] = 6;
          result[43] = 0;
          result[44] = 0;
          result[45] = 0;
          result[46] = 0;
          result[47] = 0;
          result[48] = 0;
          result[49] = 2;
          result[50] = 0;
          result[51] = 3;
          result[52] = 6;
          result[53] = 4;
          result[54] = 6;
          result[55] = 7;
          result[56] = 0;
          result[57] = 0;
          result[58] = 0;
          result[59] = 2;
          byte pre = 0; //前一数据
          byte cur = result[0];//当前数据
          byte next = 0;//下一数据
          int i = 1;
          while (true) {
             next = result[i];
             if (cur != 0 || (pre != 0 && cur == 0 && next != 0)) //如果当前值非0 或  "中间相隔一个一个0"
                System.out.println("result[" + (i - 1) + "]=" + cur);         if (i >= result.length - 1) { //边界数据,如果倒数第2个非0,则最后一个为0是否算符合?假设是符合
                if (cur != 0 || next != 0) //如果假设不符合,则此行改为:if(next != 0)
                   System.out.println("result[" + (i - 1) + "]=" + next);
                break;
             }         pre = cur;
             cur = next;
             i++;      }
      

  11.   

    修正一下(不能编辑回复,好烦) byte result[] = new byte[60];
          result[0] = 2;
          result[1] = 0;
          result[2] = 4;
          result[3] = 3;
          result[4] = 5;
          result[5] = 8;
          result[6] = 4;
          result[7] = 0;
          result[8] = 0;
          result[9] = 0;
          result[10] = 0;
          result[11] = 2;
          result[12] = 0;
          result[13] = 3;
          result[14] = 5;
          result[15] = 5;
          result[16] = 0;
          result[17] = 0;
          result[18] = 0;
          result[19] = 0;
          result[20] = 0;
          result[21] = 0;
          result[22] = 2;
          result[23] = 0;
          result[24] = 3;
          result[25] = 9;
          result[26] = 9;
          result[27] = 5;
          result[28] = 9;
          result[29] = 0;
          result[30] = 0;
          result[31] = 0;
          result[32] = 0;
          result[33] = 0;
          result[34] = 0;
          result[35] = 2;
          result[36] = 0;
          result[37] = 8;
          result[38] = -39;
          result[39] = 6;
          result[40] = 9;
          result[41] = 1;
          result[42] = 6;
          result[43] = 0;
          result[44] = 0;
          result[45] = 0;
          result[46] = 0;
          result[47] = 0;
          result[48] = 0;
          result[49] = 2;
          result[50] = 0;
          result[51] = 3;
          result[52] = 6;
          result[53] = 4;
          result[54] = 6;
          result[55] = 7;
          result[56] = 0;
          result[57] = 0;
          result[58] = 0;
          result[59] = 2;
          byte pre = 0; //前一数据
          byte cur = result[0];//当前数据
          byte next = 0;//下一数据
          int i = 1;
          while (true) {
             next = result[i];
             if (cur != 0 || (pre != 0 && cur == 0 && next != 0)) //如果当前值非0 或  "中间相隔一个一个0"
                System.out.println("result[" + (i - 1) + "]=" + cur);         if (i >= result.length - 1) { //边界数据,如果倒数第2个非0,则最后一个为0是否算符合?假设是符合
                if (cur != 0 || next != 0) //如果假设不符合,则此行改为:if(next != 0)
                   System.out.println("result[" + i + "]=" + next);
                break;
             }         pre = cur;
             cur = next;
             i++;      }