0

我的程序包含 3 个类 Student 、 Aplt 和 Aplt3 类


import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Student {

    String name;
    int mark;

    Student(String name, int mark) {
        this.name = name;
        this.mark = mark;
    }
} 

带构造函数的学生班

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.TextFiEld;
import java.awt.event.ActioNevent;
import java.awt.event.ActionListener;

public class Aplt extends Applet {

    TextField tf[] = new TextField[2];
    Student prs[] = new Student[0];
    ActionListener ins;

    public void init() {
        tf[0] = new TextField("name?", 10);
        tf[1] = new TextField("mark", 5);
        add(tf[0]);
        add(tf[1]);
        tf[1].addActionListener(ins = new Ins());
    }

    class Ins implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            String n = tf[0].getText();
            int nt = Integer.parseInt(tf[1].getText());
            Student help[] = new Student[prs.length + 1];
            System.arraycopy(prs, 0, help, 0, prs.length);
            help[help.length - 1] = new Student(n, nt);
            prs = help;
            tf[0].setText("next name");
            tf[1].setText("next mark");
            repaint();
        }
    }

    public void paint(Graphics g) {
        for (int i = 0; i < prs.length; i++) {
            g.drawString(prs.name, 10, 50 + 12 * i);
            g.drawString(prs.mark + "", 130, 50 + 12 * i);
        }
    }
}

这是aplt类。类列出了我们给定的名称和标记

import java.applet.Applet;
import java.awt.Button;
import java.awt.event.*;

public class Aplt3 extends Aplt {

    Button b1, b2;

    public void init() {
        super.init();
        b1 = new Button("remove");
        b1.addActionListener(new B1());
        add(b1);
    }

    class B1 implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            int i;
            for (i = 0; i < prs.length; i++) {
                Student help[] = new Student[prs.length - 1];
                System.arraycopy(help, 0, help, 0, help.length);
            }
            repaint();
        }
    }
}

aplt3 类。在这里,当我单击删除按钮时,我想删除数组的最后一个元素,但它没有发生。

4

2 回答 2

2

这在我看来非常可疑:

for ( i=0 ; i<prs.length; i++) { 
Student help[] = new Student[prs.length-1]; 


System.arraycopy(help, 0, help, 0, help.length); 

} 

您将数组帮助复制到自身并使用数组的完整大小。此外,您在一个看起来不太好的循环中执行此操作。我认为你所有的寻找都是这样的:

Student help[] = new Student[prs.length-1]; 
System.arraycopy(prs, 0, help, 0, help.length); 

并且根本没有循环。确保prs不为空,否则会遇到问题。

顺便说一句,括号表示“数组”而不是“ArrayList”。AnArrayList是一个 Java 集合类。

于 2012-05-22T10:01:25.880 回答
1

这是您用来添加学生的代码:

Student help[] = new Student[prs.length+1]; 
System.arraycopy(prs, 0, help, 0, prs.length); 
help[help.length-1]= new Student (n,nt); 
prs=help; 

只需使用相同的想法删除一个:

Student help[] = new Student[prs.length-1]; 
System.arraycopy(prs, 0, help, 0, help.length); 
prs=help; 
于 2012-05-22T10:06:34.940 回答