Java 从另一个数组创建数组?
我是java新手,正在使用RLE编码,我正在尝试创建一个程序,该程序接受一个字节数组,然后返回另一个字节数组,但它接受数组中连续值的数量,然后打印[(重复次数),(值)]。例如,[13,13,13,3,3,3]将返回[3,13,4,3]Java 从另一个数组创建数组?,java,arrays,encoding,Java,Arrays,Encoding,我是java新手,正在使用RLE编码,我正在尝试创建一个程序,该程序接受一个字节数组,然后返回另一个字节数组,但它接受数组中连续值的数量,然后打印[(重复次数),(值)]。例如,[13,13,13,3,3,3]将返回[3,13,4,3] import java.util.Arrays; public class testing { public static void main(String [] args) { byte [] pracArray = {13,13
import java.util.Arrays;
public class testing {
public static void main(String [] args) {
byte [] pracArray = {13,13,13,3,3,3,3};
int count = 1;
for (int i = 0; i <pracArray.length-1; i++)
{
if (pracArray[i] != pracArray[i+1])
{
count++;
}
}
byte numLength = 1;
byte indexNum = 0;
int newArraySize = count*2;
byte [] newArray = new byte [newArraySize];
for ( int i = 0; i < pracArray.length-1; i++)
{
if (pracArray[i] != pracArray[i+1] )
{
newArray[indexNum] = numLength;
newArray[indexNum+1] = pracArray[i];
indexNum = (byte) (indexNum + 2);
numLength = 1;
}
else
{
numLength++;
}
}
System.out.println(Arrays.toString((pracArray)));
System.out.println(Arrays.toString((newArray)));
}
}
导入java.util.array;
公共类测试{
公共静态void main(字符串[]args){
字节[]pracArray={13,13,13,3,3,3};
整数计数=1;
对于循环终止时的(int i=0;i),检查最后一个元素是否等于最后第二个元素
您的更新代码将是:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
byte[] pracArray = { 13, 13, 13, 3, 3, 3, 3, 1 };
int count = 1;
for (int i = 0; i < pracArray.length - 1; i++) {
if (pracArray[i] != pracArray[i + 1]) {
count++;
}
}
byte numLength = 1;
byte indexNum = 0;
int newArraySize = count * 2;
byte[] newArray = new byte[newArraySize];
int i;
for (i = 0; i < pracArray.length - 1; i++) {
if (pracArray[i] != pracArray[i + 1]) {
newArray[indexNum] = numLength;
newArray[indexNum + 1] = pracArray[i];
indexNum = (byte) (indexNum + 2);
numLength = 1;
} else {
numLength++;
}
}
if (pracArray[i - 1] == pracArray[i]) {
newArray[indexNum] = numLength;
newArray[indexNum + 1] = pracArray[i];
indexNum = (byte) (indexNum + 2);
numLength = 1;
} else {
newArray[indexNum] = numLength;
newArray[indexNum + 1] = pracArray[i];
}
System.out.println(Arrays.toString((pracArray)));
System.out.println(Arrays.toString((newArray)));
}
}
byte[]pracArray={13,13,13,3,3,3}
的输出如下:
[13, 13, 13, 3, 3, 3, 3]
[3, 13, 4, 3]
谢谢你的帮助!!
[13, 13, 13, 3, 3, 3, 3]
[3, 13, 4, 3]