2017-06-02 2 views
0

Hier ist mein Applet.ToString druckt keine tatsächlichen Array-Werte in einem JApplet

JApplet

public void paint(Graphics g){ 
    super.paint(g); 

    Font font = new Font("monospaced", Font.BOLD, 12); 
    g.setFont(font); 

    g.setColor(Color.YELLOW); 
    g.fillRect(0, 105, 500, 500); 
    g.setColor(Color.BLACK); 

    g.drawString("hello", 120, 300); 

    for(int c = 0; c < 1;){ 

     for(int b = 250; c < 9; b = b + 10){ 
      g.drawString(roster[c].toString(), 10, b); 
      c++; 
     } 

    } 
    g.drawString(roster[0].toString(), 0, 250); 



} 
    public Student[] setup(){ 
    count = 10; 
    roster = new Student[count]; 
    int x = 0; int e = 0; 
    int[] gtest = new int[5]; 

    for(e = 0; e < 5; e++){ 
     gtest[e] = 0; 
    } 


    for(x = 0; x < 31; x++){ 
     roster[x] = new Student("", 0, gtest); 
    } 

    int[] help = new int[5]; 
    help[0] = 84; help[1] = 85; help[2] = 86; help[3] = 87; help[4] = 88; 

    roster[0] = new Student("Pocket, beam", 2017, new int[] {84, 85, 84, 87, 88, 88}); 
    roster[1] = new Student("Zuckerberg, Marcus", 2017, help); 
    roster[2] = new Student("Timelapse, Random", 2013, help); 
    roster[3] = new Student("Timelapse, Random2", 2013, help); 
    roster[4] = new Student("Timelapse, Random3", 2016, help); 
    roster[5] = new Student("god, not", 2016, help); 
    roster[6] = new Student("Webster, Jacques", 2016, help); 
    roster[7] = new Student("East, Kanayo", 2016, help); 
    roster[8] = new Student("Blue, Canoe", 2017, help); 
    roster[9] = new Student("West, East", 2017, help); 

    return(roster); 

} 

ich den spezifischen Code als auch geklebt, ist die .toString im Verfahren Graphics.

Hier ist meine toString Methode innerhalb der Konstruktorklasse.

public String toString(){ 
    DecimalFormat tens = new DecimalFormat("0.00"); 
    String ans = String.format("%-20s%-8s %-5s%-5s%-5s%-5s%-5s%-10s", name, year, 
    grades[0], grades[1], grades[2], grades[3], grades[4], tens.format(gpa)); 
    return(ans); 

} 

Deshalb glaube ich, das Problem mit der ist, wie ich rufe .toString hat mein googeln gezeigt, dass ich angeblich java.util.Arrays zu benutzen? Ich habe das versucht und ich kann nicht herausfinden, was falsch ist. Ich weiß, es ist ein einfacher Syntaxfehler, aber ich kann nicht herausfinden, was es ist.

Was passiert ist, dass die Dienstplannummern auf die Applet gedruckt werden, aber alle Werte sind 0,00 oder 0 oder was auch immer 0 in ihren jeweiligen Formaten.

Auch repaint() in meinem actionperformed Methode

+0

Haben Sie versucht, repaint() aufrufen? –

+0

Ich tat, es ist in meiner actionperformed Methode – Hquad

+0

Zum einen verursacht Ihre Schleife von x = 0 bis 31 einen Array-Index außerhalb der Grenzen, da das Roster-Array nur Größe 10 ist. – pacifier21

Antwort

1

In der setup Funktion, Befreien Sie sich von THIS genannt wird:

for(x = 0; x < 31; x++){ 
    roster[x] = new Student("", 0, gtest); 
} 

Es hat eine ArrayIndexOutOfBoundsException verursacht, weil roster nur 10 Elemente.

Dann Ihren Text Malerei Aussehen wie folgt aussehen:

// Ger rid of the outer loop on c 
// for (int c = 0; c < 1) { 
// Change your initial b value from 250 to 115. 250 is too low for your window 
for(int b = 115, c = 0; c < 9; b = b + 10){ 
    g.drawString(roster[c].toString(), 10, b); 
    c++; 
} 
// }