gpt4 book ai didi

java - 我无法从Java中的数组列表中删除最后一个元素

转载 作者:行者123 更新时间:2023-12-02 00:22:21 24 4
gpt4 key购买 nike

我的程序包含 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 类。类(class)列出了我们的名字和标记

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 类。在这里,当我单击“删除”按钮时,我想删除数组的最后一个元素,但它没有发生。

最佳答案

这对我来说看起来很可疑:

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 类。

关于java - 我无法从Java中的数组列表中删除最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com