数组索引超出界限-77

时间:2016-04-12 22:11:59

标签: java python arrays exception byte

我的代码有点问题。 我试图将代码从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

有没有人知道或者可以更好地重写它?

2 个答案:

答案 0 :(得分:1)

Java的for (a : b)循环遍历,而不是索引。

index实际上不是索引。

答案 1 :(得分:1)

此形式的for循环(“增强”for循环)会生成数组的,而不是索引。值-77byte的签名值,而不是索引,因此是异常。请注意,即使将值提取为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 */ );
}