Also das ist mein Code:Fehler beim Versuch, ein Rechteck mit Arrays als Argumente in Java anzuzeigen
import javax.swing.*;
import java.awt.*;
public class ShapeTest extends JFrame{
public ShapeTest(){
setSize(600,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String a[]){
new ShapeTest();
}
public void paint(Graphics g){
Rectangle[][] v = new Rectangle[200][200];
v[1][1].x=0;
v[1][1].y=0;
v[1][1].width=50;
v[1][1].height=50;
int y1=50;
for(int i=1; i<=7; i++){
int cont=50;
for(int j=1; j<=7; j++){
v[i][j].x+=cont;
v[i][j].y=y1;
cont+=70;
}
y1+=70;
}
for(int i=1; i<=7; i++){
for(int j=1; j<=7; j++){
g.drawRect(v[i][j].x, v[i][j].y, v[i][j].width, v[i][j].height);
g.setColor(Color.yellow);
g.fillRect(v[i][j].x, v[i][j].y, v[i][j].width, v[i][j].height);
}
}
}
}
und das ist die Unterklasse:
public class Rectangle{
public int x;
public int y;
public int width;
public int height;
}
Wenn ich den Code ausführen, keine Rechtecken angezeigt werden, aber ich bekomme eine Reihe von Fehlern in einem Textfeld:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ShapeTest.paint(ShapeTest.java:18)
das ist der einzige Fehler, der rot ist und ich habe keine Ahnung, warum er erscheint. Ich habe neulich versucht, den Code ohne Arrays laufen zu lassen und es hat funktioniert, also glaube ich, dass das das Problem sein könnte.
einfach zu schreiben um sicher zu sein, wissen Sie, dass, wenn ein Array 7-Zellen hat sie 0-6 nummeriert sind? 'für (int i = 1; i <= 7; i ++) scheint eigenartig. Normalerweise hätten Sie für (int i = 0; i <7; i ++). Das Gleiche gilt für 'v [1] [1]', normalerweise ist die erste Zelle 'v [0] [0]'. – kabanus
@kabanus ja, aber meine ursprüngliche Array hat 200 * 200 Werte und ich möchte immer von 1 beginnen, um nicht mit den Nullen zu verwirren, also im Grunde, wenn ich von 1 beginne und gehe zu 7 enthalten, werde ich 7 Zellen haben sowieso. – Whitewolf3131
Wenn die Zeile des Fehlers angegeben ist, fügen Sie einen Kommentar zu der Zeile in Ihrem Post hinzu, damit wir wissen können, wo es sich befindet. – azro