2016-03-10 4 views
-2

У меня есть метод, как это:Как понять длину массива

private static byte [] rec (byte []...n) { 
    int nob = n[0].length - 1; 
    System.out.println("The length of this is : " + nob); 
} 

В моей основной метод, я звоню это так:

byte [][] shar = one.calculatethresholdscheme(secret, n,k, new SecureRandom()); 

byte [][] sharesToViewSecret = new byte[] []{shar[0],shar[1],shar[3],shar[6]}; 

// when we say n[0], n[2], n[3] we are talking for the rows of byte [] [] n which keeps the index from 0 to 7 
byte [] recoverSecret = one.rec(sharesToViewSecret); 

А потом, когда я распечатать его это дает мне результат, которого я не ожидал. Может ли кто-нибудь объяснить, что означает n[0].length - 1;?

На самом деле я ожидал получить результат 4, так как я использовал четыре аргумента метода shar[...], но он дает мне результат 11, который на самом деле является числом байтов моего файла.

+1

Просьба предоставить MCVE http://stackoverflow.com/help/mcve. Как бы то ни было, я ничего не могу понять о вас, правильно или неправильно. – CrazyCasta

ответ

2

Декларация

private static byte [] rec (byte []...n) 

Является (somewhat) equivalent к

private static byte [] rec (byte [][] n) 

В вашем методе rec, n представляет собой массив массивов байтов. n[0] - это первый из этих массивов.

Когда вы звоните rec, первый элемент n является shar[0], и поэтому n[0].length дает вам shar[0].length. Если вы хотите количество элементов в n, вы просто хотите n.length.

-2

Я уверен, что средство n[0].length - 1; принимает длину 0-го члена в n массиве, тогда оно вычитает 1 из длины. Например, если 0-й термин был «Hello», длина будет «4», тогда код будет вычитать 1 из 4 и получить 3. Имейте в виду, что в java и других языках вы начинаете считать с 0 не 1. Надеюсь, что это поможет ,

+0

Длина «Hello» будет 5 не 4. – callyalater

+0

Вы можете подтвердить [здесь] (http://ideone.com/g5DnPN) – callyalater

+0

-1: 1. Строки не представлены в виде байтов или даже массивов символов в Java, пожалуйста не путайте этого ученика. 2. Ваша математика ошибочна, как указал callyalater. Попробуйте использовать только пример массива байтов. – CrazyCasta

Смежные вопросы