Reputation: 3
My program contains 3 classes Student , Aplt and Aplt3 classes
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 class. Here I want to delete last element of array when I click to remove button, but it doesn't happen.
Upvotes: 0
Views: 2145
Reputation: 12770
Here is the code you use to add a student:
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;
Just use the same idea to remove one:
Student help[] = new Student[prs.length-1];
System.arraycopy(prs, 0, help, 0, help.length);
prs=help;
Upvotes: 1
Reputation: 47608
This looks very suspicious to me:
for ( i=0 ; i<prs.length; i++) {
Student help[] = new Student[prs.length-1];
System.arraycopy(help, 0, help, 0, help.length);
}
You copy the array help to itself and with the complete size of the array. Moreover you do this in a loop which does not look good. I think that all your looking for is something like this:
Student help[] = new Student[prs.length-1];
System.arraycopy(prs, 0, help, 0, help.length);
and no loop at all. Make sure that prs is not empty, otherwise you will run into problems.
By the way, brackets indicate an "array" not an "ArrayList". An ArrayList
is a Java Collection class.
Upvotes: 2