2016-04-28 128 views
0

爲了測試我的邏輯是否可行(我認爲它應該但它不是)我在一個繪製方法中執行小操作,我只是不想把我的主要項目搞亂。二維索引 - 數組超出範圍

我有一個板瓷磚的X和Y位置和只想確保我有正確的X和Y所以我做了這個方法:

private void drawBoard(Graphics2D g2d) throws IOException { 
    BufferedImage image = ImageIO.read(getClass().getResourceAsStream("/background.png")); 
    g2d.drawImage(image,0,0, null,null); 
    int col = 2; 
    int rows = 6; 
    int[][] RedArray = 
     {{274, 399}, 
     {274, 440}, 
     {274, 480}, 
     {274, 520}, 
     {274, 560}, 
     {274, 600}}; 

    for(int i = 0; i < col; i++){ 
     for(int j = 0; i < rows; j++){ 
      g2d.drawRect(RedArray[rows][col], RedArray[rows][col], 25, 25); 
     } 
    } 

} 

這是應該得到的x,y從RedArray的值,然後將它們繪製到板上,但我得到一個索引超出了界限的錯誤,我似乎無法踢它

回答

2

在你的第二個循環你有我行,需要是j <像這樣的行:

for (int j = 0; j < rows; j++) 

而且RedArray[rows][col]應該是RedArray[j][i]

+0

基督..我怎麼錯過.. –

+0

這不是企業的實際問題。 'RedArray [rows] [col]'應該是'RedArray [j] [i]' –

+1

@PigeonMilk故事,我明白你的失望,但請使用不要在這裏接受基督的名義,謝謝! – Cameron637

2
RedArray[rows][col] 

你想ij這裏,不rowscol

+0

我是這樣的笨蛋.. –

0

我想你想要做這樣的事情

private void drawBoard(Graphics2D g2d) throws IOException { 
BufferedImage image = ImageIO.read(getClass().getResourceAsStream("/background.png")); 
g2d.drawImage(image,0,0, null,null); 
int col = 2; 
int rows = 6; 
int[][] RedArray = 
    {{274, 399}, 
    {274, 440}, 
    {274, 480}, 
    {274, 520}, 
    {274, 560}, 
    {274, 600}}; 

for(int i = 0; i < col; i++){ 
    for(int j = 0; j < rows; j++){ 
     g2d.drawRect(RedArray[j][i], RedArray[j][i], 25, 25); // not RedArray[rows][cols] 
    } 
} 

}