2015-02-28 3 views
-2

Я пытаюсь сделать 2d массив, и я использую этот кодКак исправить ArrayIndexOutOfBoundException: 4

public void createPwm() 
{ 
    double[ ][ ] aryNumbers = new double[4][8]; 
    aryNumbers[0][0] = new Double((3 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[0][1] = new Double((2 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[0][2] = new Double((1 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[0][3] = new Double((4 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[1][0] = new Double((4 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[1][1] = new Double((3 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[1][2] = new Double((2 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[1][3] = new Double((1 + .1)/(10 + 4 * 0.1)); 
    aryNumbers[2][0] = new Double((1 + .1)/(10 + 4 * 10)); 
    aryNumbers[2][1] = new Double((1 + .1)/(10 + 4 * 10)); 
    aryNumbers[2][2] = new Double((6 + .1)/(10 + 4 * 10)); 
    aryNumbers[2][3] = new Double((2 + .1)/(10 + 4 * 10)); 
    aryNumbers[3][0] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[3][1] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[3][2] = new Double((10 + .1)/(10 + 4 * 10)); 
    aryNumbers[3][3] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[4][0] = new Double(.1/(10 + 4 * 10)); 
    aryNumbers[4][1] = new Double((10 + .1)/(10 + 4 * 10)); 
    aryNumbers[4][2] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[4][3] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[5][0] = new Double((6 + .1)/(10 + 4 * 10)); 
    aryNumbers[5][1] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[5][2] = new Double((4 + .1)/(10 + 4 * 10)); 
    aryNumbers[5][3] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[6][0] = new Double((8 + .1)/(10 + 4 * 10)); 
    aryNumbers[6][1] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[6][2] = new Double((2 + .1)/(10 + 4 * 10)); 
    aryNumbers[6][3] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[7][0] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[7][1] = new Double((0 + .1)/(10 + 4 * 10)); 
    aryNumbers[7][2] = new Double((9 + .1)/(10 + 4 * 10)); 
    aryNumbers[7][3] = new Double((1 + .1)/(10 + 4 * 10)); 
    aryNumbers[8][0] = new Double((1 + .1)/(10 + 4 * 10)); 
    aryNumbers[8][1] = new Double((6 + .1)/(10 + 4 * 10)); 
    aryNumbers[8][2] = new Double((2 + .1)/(10 + 4 * 10)); 
    aryNumbers[8][3] = new Double((1 + .1)/(10 + 4 * 10));    
} 

, но я постоянно получаю ArrayIndexOutOfBoundException: 4 вокруг массива [4] [0].

ответ

0

Посмотрите на вашем объявлении массива:

new double[4][8] 

Первое измерение массива имеет только 4 элементов. Таким образом, вы получите сообщение об ошибке при попытке получить доступ к 5-й элемент:

aryNumbers[4][0] 

На самом деле, ваш код пытается доступ ко всем пути вверх через девятую элемент:

aryNumbers[8][0] 

судя по ней, вы, вероятно, имел в виду объявить массив как это:

new double[9][4] 
0

Вы не можете использовать индекс 4, если в этой позиции есть четыре записи (new double[4][8]). Самый левый индекс может быть 0, 1, 2, или 3 в этом случае.

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