如何将字符串添加到 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();
}
我已经创建了整个代码,但我不知道如何将字符串添加到字符串数组。
这是我的代码:
**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();
}