【问题标题】:toString not printing actual array values within a JApplettoString 不打印 JApplet 中的实际数组值
【发布时间】:2017-06-10 12:30:41
【问题描述】:

这是我的小程序。

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 在 Graphics 方法中。

这是我在构造函数类中的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?我已经尝试过了,但我不知道出了什么问题。我知道这是一个简单的语法错误,但我不知道它是什么。

所发生的情况是,花名册编号被打印到 applet 上,但所有的值都是 0.00 或 0 或任何 0 在它们各自的格式中。

在我的actionperformed 方法中也调用了repaint()

【问题讨论】:

  • 你尝试调用 repaint() 吗?
  • 我做了,在我的 actionperformed 方法中
  • 一方面,从 x = 0 到 31 的循环导致数组索引超出范围,因为名册数组的大小仅为 10。
  • 除此之外,您的 toString 工作正常!问题是它们被绘制在您的小程序范围之外。尝试将你的小程序调整得更高(在去掉 x=0-31 for 循环之后),你会看到你的文本打印出你可能期望的样子。

标签: java arrays tostring


【解决方案1】:

setup 函数中,摆脱这个:

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

它会导致 ArrayIndexOutOfBoundsException,因为 roster 只有 10 个元素。

然后,改变你的文字绘画看起来像这样:

// 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++;
}
// }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    相关资源
    最近更新 更多