如何将字符串添加到 StringArray 中

How to add a string into a StringArray

我已经创建了整个代码,但我不知道如何将字符串添加到字符串数组。

这是我的代码:

**CandidateDAO candidatedao = new CandidateDAO();
        String fill = null;
        CandidateReport[] candidatesReports = candidatedao.getAllCandidates();
        String [] newArray = ;
        
        for(int i = 0; i < candidatesReports.length; i++) {
            fill = candidatesReports[i].getCandidateId() + ":" + this.calculateGrade(candidatesReports[i]);
            
        }
            
        return newArray;*****
String [] newArray = ;

这显然是错误的。要创建任何类型的数组,首先需要正确实例化它。为此,您需要设置其大小。之所以需要设置它的大小,是因为数组是在内存中连续分配的。这意味着每个索引位置都紧挨着另一个。

String [] newArray = new String[SOME_SIZE];

SOME_SIZE 是根据您需要的任何值。在您的情况下,您有另一个数组 candidatesReport,可用于确定给定数组的大小(长度)。

String [] newArray = new String[candiatesReport.length];

完成后,您需要在数组中设置值。

newArray[i] = ...;

对你来说,这是在循环内完成的...

for(int i = 0; i < candidatesReports.length; i++) {
    newArray[i] = candidatesReports[i].getCandidateId() + ":" + this.calculateGrade(candidatesReports[i]);
}

更新: 本题主要是通过从每个实例中收集数据并将其拼接为一个String来显示CandidateReport个对象数组中包含的一些信息。不知道上述 class 的内部结构,我相信通过在 CandidateReport class 中覆盖对象的 class toString() 方法可以更好地解决这个问题,所以当打印这种类型的对象时,输出会按照我们想要的方式出现。否则,每个 class 想要显示 CandidateReport 内容,都必须一遍又一遍地重复相同的代码。所以这是一个覆盖 toString() 方法的简单案例。

public class CandidateReport {
    // rest of code omitted
    @Override
    public String toString() {
        return candidateId + ":" + grade;
    }
}

如果需要计算成绩,您最好将该逻辑放在实用程序中 class,您可以在其中调用一些静态方法来 return 计算。例如:

return candidateId + ":" + CalculatorUtilities.calculateGrade(grade);

问题的关键在于每个 class 都应该覆盖 Object#toString() 方法以提供给定类型对象的默认字符串表示形式。如果这样做,您将根本不需要 String 数组。但是,如果您仍然觉得有必要在 String 数组中捕获此数据,那么由于重写了 toString() 方法,您的代码会简单得多。

for(int i = 0; i < candidatesReports.length; i++) {
    newArray[i] = candidatesReports[i].toString();
}