我正在尝试编写一个类来构造一个包含特定字符串值的数组,并且我还想在同一个类中创建一个方法来显示数组值。这是我目前所拥有的
import java.util.Arrays;
public class Courses
{
private int next;
String [] studentArray;
String classList;
public Courses ()
{
String[] studentArray = new String[11];
studentArray[0] = "CSCI 0066";
studentArray[1] = "CHEM 003B";
studentArray[2] = "HUM 0002";
studentArray[3] ="MATH 0032";
studentArray[4] = "CHEM 003Y";
studentArray[5] = "MATH 0031";
studentArray[6] = "CSCI 0026";
studentArray[7] = "PHYS 0105L";
studentArray[8] = "PHYS 0105";
studentArray[9] = "CSCI 0013";
studentArray[10] = "ENGL 001C";
next = 0;
}
public String displayCourses()
{
for (int i = 0; i < studentArray.length; i++)
{
classList = studentArray[i];
}
return classList;
}
}
最佳答案
尝试打印而不是覆盖和返回:
public void displayCourses(){
for (int i = 0; i < studentArray.length; i++){
System.out.println(studentArray[i]);
}
}
正如@GhostCat所说,直接打印是不好的做法,所以创建一个字符串并将所有数据追加到in中,然后返回如下:
String s = "";
public String displayCourses(){
for (int i = 0; i < studentArray.length; i++){
s += studentArray[i] + "\n";
}
return s;
}
这也可以使用 StringBuffer
(同步)或 StringBuilder
(异步)来完成。
如@Shashwat 所述,使用 StringBuilder
会更高效,如下所示:
StringBuilder sb = new StringBuilder();
public String displayCourses(){
for (int i = 0; i < studentArray.length; i++){
sb.append(studentArray[i]+"\n");
}
return sb.toString();
}
并使用StringBuffer
:
StringBuffer sb = new StringBuffer();
public String displayCourses(){
for (int i = 0; i < studentArray.length; i++){
sb.append(studentArray[i]+"\n");
}
return sb.toString();
}
正如@MadProgrammer 所建议的,这也可以使用 StringJoiner
来完成:
StringJoiner sj = new StringJoiner("\n");
public String displayCourses(){
for (int i = 0; i < studentArray.length; i++){
sj.add(studentArray[i]);
}
retunr sj.toString();
}
是的!要摆脱 NullPointerException
,请不要在构造函数中创建新数组。只需对其进行初始化即可。
String[] studentArray;
Course(){
studentArray = new String[11];
...
...
}
关于java - 如何创建一个显示字符串数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960464/