2016-04-28 24 views
0

Um zu testen, ob meine Logik funktioniert (ich denke, es sollte aber nicht) Ich mache kleine Operationen in einer Malmethode, ich wollte einfach mein Hauptprojekt nicht durcheinander bringen .2D-Index-Array außerhalb der Grenzen

Ich habe X- und Y-Positionen von Fliesen auf einem Brett und will nur sicherstellen, dass ich die richtigen X und Y so habe ich diese Methode:

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); 
     } 
    } 

} 

das soll den x bekommen, y Werte aus dem RedArray und dann malen sie auf der Platine, aber ich bekomme einen Index out of Bound Fehler und ich kann nicht scheinen, es zu treten

Antwort

2

In Ihrer zweiten for-Schleife haben Sie i < Zeilen, muss j < sein Zeilen wie folgt:

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

Auch sollte RedArray[rows][col]RedArray[j][i] sein

+0

Christus .. tun will, wie habe ich das vermissen .. –

+0

Das ist nicht das eigentliche Problem ist. 'RedArray [rows] [col]' sollte sein 'RedArray [j] [i]' –

+1

@PigeonMilk Geschichten, ich verstehe Ihre Frustration, aber bitte verwenden Sie nicht den Namen Christus vergebens hier, danke! – Cameron637

2
RedArray[rows][col] 

Sie i und j hier wollen, nicht rows und col.

+0

Ich bin so ein Idiot .. –

0

Ich glaube, Sie so etwas wie dies

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] 
    } 
} 

}

Verwandte Themen