我的程序包含3个类 学生,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);
}
}
}
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类。这里我想删除按钮时删除数组的最后一个元素,但它不会发生。
答案 0 :(得分: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”。 ArrayList
是Java Collection类。
答案 1 :(得分: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;