数组索引越界异常-77
Array Index Out Of Bounds Exception -77
我的代码有点问题。
我试图将代码从 python 重写为 java。
在Python中是:
data = bytearray(filesize)
f.readinto(data)
然后我试着在java中这样写:
try {
data = Files.readAllBytes(file.toPath());
} catch (IOException ex) {
Logger.getLogger(Encrypter.class.getName()).log(Level.SEVERE, null, ex);
}
for(int index : data) {
data[index] = (byte) ((byte) Math.pow(data[index], genfun((fileSize), index)) & 0xFF);
}
一切对我来说似乎都很好但是当我编译它时有一个 java.lang.ArrayIndexOutOfBoundsException: -77
有没有人有线索或者可以改写得更好?
Java 的 for (a : b)
循环遍历 值 ,而不是索引。
index
实际上不是索引。
这种形式的 for
循环("enhanced" for 循环)产生数组的 值 ,而不是索引。值 -77
是 byte
的有符号值,而不是索引,因此例外。请注意,即使该值被提取为 byte
,Java 也很乐意在您声明它时将 value
隐式扩展为 int
。
使用标准 for
循环:
for (int index = 0; index < data.length; index++)
{
byte value = data[index];
data[index] = (byte) ( /* Your byte manipulation of value goes here */ );
}
我的代码有点问题。 我试图将代码从 python 重写为 java。
在Python中是:
data = bytearray(filesize)
f.readinto(data)
然后我试着在java中这样写:
try {
data = Files.readAllBytes(file.toPath());
} catch (IOException ex) {
Logger.getLogger(Encrypter.class.getName()).log(Level.SEVERE, null, ex);
}
for(int index : data) {
data[index] = (byte) ((byte) Math.pow(data[index], genfun((fileSize), index)) & 0xFF);
}
一切对我来说似乎都很好但是当我编译它时有一个 java.lang.ArrayIndexOutOfBoundsException: -77
有没有人有线索或者可以改写得更好?
Java 的 for (a : b)
循环遍历 值 ,而不是索引。
index
实际上不是索引。
这种形式的 for
循环("enhanced" for 循环)产生数组的 值 ,而不是索引。值 -77
是 byte
的有符号值,而不是索引,因此例外。请注意,即使该值被提取为 byte
,Java 也很乐意在您声明它时将 value
隐式扩展为 int
。
使用标准 for
循环:
for (int index = 0; index < data.length; index++)
{
byte value = data[index];
data[index] = (byte) ( /* Your byte manipulation of value goes here */ );
}