2017-06-02 5 views
0

これは私のアプレットです。toStringは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); 

} 

私は.toStringがグラフィック方法であり、同様に特定のコードを貼り付けました。

ここに私のtoStringメソッドがコンストラクタクラス内にあります。

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

} 

だから私は、問題は私が.toStringを呼んでいる方法であると信じて、私のグーグルでは、私はjava.util.Arraysを使用するようになってることが示されていますか?私はそれを試みましたが、何が間違っているのか分かりません。私はその単純な構文エラーを知っていますが、私はそれが何であるかを選ぶことはできません。

アプレットにはロスタ番号が印刷されますが、すべての値はそれぞれの形式で0または0またはすべて0です。またrepaint()

setup機能で私のactionperformed方法

+0

あなたは)(再描画を呼び出そうとしましたか? –

+0

私はそれを実行したのですが、それは私の実行したメソッドです – Hquad

+0

x = 0から31までのループは、配列のインデックスが範囲外になっているためです。 – pacifier21

答えて

1

に呼ばれて、THISを取り除く:rosterのみ10個の要素を持っているのでそれはArrayIndexOutOfBoundsExceptionが原因となっている

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

。その後

、このように見えるように、あなたのテキストの絵を見て変更します。

// 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++; 
} 
// } 
関連する問題