假如 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 希望好心人
会的人
帮小弟想想办法
感激不尽
小弟初学基础不好.
希望高手赐教!!
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 希望好心人
会的人
帮小弟想想办法
感激不尽
小弟初学基础不好.
希望高手赐教!!
就是怎么取出0到240之间result[11] 到result[15]中间的值
result[22] 到result[28]中间的值
result[35] 到result[42]中间的值
result[49] 到result[55]中间的值 等等 ..
// 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++;
} }
}
你看一下,希望能够对你有启发。
// 是否已经开始计数一组数据
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++;
}哎呀,缩紧什么的都乱了,不好意思哦。
这段代码写的也不是很好,因为~~我饿了,呵呵。
方法不止一种,我只是抛砖引玉,希望……呵呵
若是如此,只需要将数据开始时候的判断条件稍作更改就好了。原来的是
if (result[i] != 0) {
……
}
改为
if (result[i] == 2) {
……
}
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个值
那么。假如说,数组中出现2020203这样的数据,如何处理呢?按照你的程序,将其分成两组:202和203
我现在也有些不懂,LZ究竟希望这样的数据如何分组?而且,如果在数组最末出现20,只要LZ数据补上一句result[239] = 2;楼上的程序必然出现数组下标越界的问题。能够引发此种情况的情形不只这个。
第一条我是开始没理解,我以为只要除了第二位的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的意思
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++; }
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++; }
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++; }