gpt4 book ai didi

java stringbuilder删除一行

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

所以我有这个问题。我已经使用了 StringBuilder,并且正在尝试使用 JOptionPane 创建一个显示函数,该函数将显示员工的姓名和工资。每次从系统中删除员工姓名时,显示函数还必须删除一行,因为我不希望 JOptionPane 框中有空行。但是,我无法让它正确显示,因为当我尝试删除员工姓名时,它会删除自己的员工姓名以及列表中位于其之前的所有员工姓名。 StaffDetails 是一个单独的数组,其中包含员工的姓名和工资。这是我用于显示人员的代码:

public static StringBuilder staffRecord= new StringBuilder();
public static void displayrezStaffRecord(){
int staffnumber=1;
for (int n=0;n<staffDetails.length;n++){
staffRecord.append(staffDetails[n].getStaffName());
staffRecord.append("\t ");
staffRecord.append(staffDetails[n].getPay());
staffRecord.append(" \n ");
staffnumber++;
if (staffDetails[n].getStaffName()==null){
menunumber--;
staffRecord.delete(0,staffRecord.length());

}

}
String finalresult= staffRecord.toString();
JOptionPane.showMessageDialog(null,"Staff_No Staff_Name Pay \n" +finalresult);
}
}

最佳答案

我最好的建议是避免同时完成两个操作。此处,您尝试过滤掉已删除的员工,同时将其数据附加到 StringBuilder。理想情况下,我会首先过滤掉员工,然后使用他们来创建我的 String 输出。考虑到这一点,您的方法将如下所示:

public static void display() {

StringBuilder builder = new StringBuilder();

List<Employee> filtered = Arrays.stream(employees)
.filter(employee -> employee.getName() == null)
.collect(Collectors.toList());


filtered.forEach(employee ->
builder.append(employee.getName())
.append("\t ")
.append(employee.getPay())
.append("\n "));

String output = builder.toString();
JOptionPane.showMessageDialog(null,"Staff_No Staff_Name Pay \n" + output);
}

假设您将员工存储在员工数组中,我基本上会流式传输该数组,过滤掉所有名称为空的条目,并将结果收集在列表中。

有了该列表,我将继续使用 StringBuilder 构建要在对话框中显示的输出消息。这里还要注意,我认为让 StringBuilder 成为类的静态成员没有任何意义。您很可能将其放在该方法的上下文中。

完成上述所有操作后,您可以执行两个截然不同的操作。一是过滤掉所有不需要的条目,二是输出字符串的实际构造。

关于java stringbuilder删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51694949/

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