Java 如何创建显示字符串数组的方法
我试图编写一个类来构造一个包含特定字符串值的数组,我还想在同一个类中创建一个显示数组值的方法。这是我到目前为止所拥有的Java 如何创建显示字符串数组的方法,java,arrays,string,Java,Arrays,String,我试图编写一个类来构造一个包含特定字符串值的数组,我还想在同一个类中创建一个显示数组值的方法。这是我到目前为止所拥有的 import java.util.Arrays; public class Courses { private int next; String [] studentArray; String classList; public Courses () { String[] studentArray = ne
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;
}
}
导入java.util.array;
公共课
{
私有int next;
字符串[]学生阵列;
字符串类列表;
公共课程()
{
String[]studentArray=新字符串[11];
学生阵列[0]=“CSCI 0066”;
学生阵列[1]=“化学003B”;
学生阵列[2]=“HUM 0002”;
学生阵列[3]=“数学0032”;
studentArray[4]=“CHEM 003Y”;
学生阵列[5]=“数学0031”;
学生阵列[6]=“CSCI 0026”;
学生阵列[7]=“PHYS 0105L”;
学生阵列[8]=“PHYS 0105”;
学生阵列[9]=“CSCI 0013”;
学生阵列[10]=“英语001C”;
next=0;
}
公共字符串displayCourses()
{
for(int i=0;i
尝试打印,而不是覆盖并返回:
public void displayCourses(){
for (int i = 0; i < studentArray.length; i++){
System.out.println(studentArray[i]);
}
}
并使用StringBuffer
:
StringBuffer sb = new StringBuffer();
public String displayCourses(){
for (int i = 0; i < studentArray.length; i++){
sb.append(studentArray[i]+"\n");
}
return sb.toString();
}
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];
...
...
}
尝试打印,而不是覆盖并返回:
public void displayCourses(){
for (int i = 0; i < studentArray.length; i++){
System.out.println(studentArray[i]);
}
}
并使用StringBuffer
:
StringBuffer sb = new StringBuffer();
public String displayCourses(){
for (int i = 0; i < studentArray.length; i++){
sb.append(studentArray[i]+"\n");
}
return sb.toString();
}
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 stringbuilder添加所有值并作为字符串返回在显示方法中,您可以使用Java stringbuilder添加所有值并作为字符串返回简单的方法:使用+=表示结果字符串:
classList +=
在这个for循环中。但当然,更有效的方法是使用StringBuilder
或者使用Arrays类中的内置方法将数组转换为字符串
并记录在案:
- 方法名printClasses()表示此方法打印数组内容。在这种情况下:只需打印每一行李>
- 或者将该方法重命名为GetClasseSassString(),例如,以表示该方法应该执行的操作李>
classList +=
在这个for循环中。但当然,更有效的方法是使用StringBuilder
或者使用Arrays类中的内置方法将数组转换为字符串
并记录在案:
- 方法名printClasses()表示此方法打印数组内容。在这种情况下:只需打印每一行李>
- 或者将该方法重命名为GetClasseSassString(),例如,以表示该方法应该执行的操作李>
课程
构造函数实际上创建了学生阵列
的局部阴影,因此您应该删除字符串[]
。此外,还可以内联声明数组。我还建议您重写toString()
,而不是创建自己的方法display
,该方法返回字符串。假设您使用的是Java8+,那么您可能会使用收集器。大概
public class Courses {
private int next;
String[] studentArray;
String classList;
public Courses() {
studentArray = new String[] { "CSCI 0066", "CHEM 003B",
"HUM 0002", "MATH 0032", "CHEM 003Y", "MATH 0031",
"CSCI 0026", "PHYS 0105L", "PHYS 0105", "CSCI 0013", "ENGL 001C" };
next = 0;
}
@Override
public String toString() {
return Arrays.stream(studentArray).collect(Collectors.joining(", "));
}
}
您的Courses
构造函数实际上创建了studentArray
的局部阴影,因此您应该删除字符串[]
。此外,还可以内联声明数组。我还建议您重写toString()
,而不是创建自己的方法display
,该方法返回字符串。假设您使用的是Java8+,那么您可能会使用收集器。大概
public class Courses {
private int next;
String[] studentArray;
String classList;
public Courses() {
studentArray = new String[] { "CSCI 0066", "CHEM 003B",
"HUM 0002", "MATH 0032", "CHEM 003Y", "MATH 0031",
"CSCI 0026", "PHYS 0105L", "PHYS 0105", "CSCI 0013", "ENGL 001C" };
next = 0;
}
@Override
public String toString() {
return Arrays.stream(studentArray).collect(Collectors.joining(", "));
}
}
使用
但是,在构造函数中,您创建了另一个名为studentArray
的数组,该数组覆盖了原始数组,从而导致NullPointerException
public Courses ()
{
studentArray = new String[11];
//..rest of the code
使用
但是,在构造函数中,您创建了另一个名为studentArray
的数组,该数组覆盖了原始数组,从而导致NullPointerException
public Courses ()
{
studentArray = new String[11];
//..rest of the code
公共一级{
私有int next;
字符串[]学生阵列;
字符串classList=null;
字符串d=null;
公众假期课程(){
String[]studentArray=新字符串[11];
学生阵列[0]=“CSCI 0066”;
学生阵列[1]=“化学003B”;
学生阵列[2]=“HUM 0002”;
学生阵列[3]=“数学0032”;
studentArray[4]=“CHEM 003Y”;
学生阵列[5]=“数学0031”;
学生阵列[6]=“CSCI 0026”;
学生阵列[7]=“PHYS 0105L”;
学生阵列[8]=“PHYS 0105”;
学生阵列[9]=“CSCI 0013”;
学生阵列[10]=“英语001C”;
for(int i=0;i”+类列表);
}
}
公共静态void main(字符串[]args){
一个o=新的一个();
o、 课程();
}
}
公共一级{
私有int next;
字符串[]学生阵列;
字符串classList=null;
字符串d=null;
公众假期课程(){
String[]studentArray=新字符串[11];
学生阵列[0]=“CSCI 0066”;
学生阵列[1]=“化学003B”;
学生阵列[2]=“HUM 0002”;
学生阵列[3]=“数学0032”;
studentArray[4]=“CHEM 003Y”;
学生阵列[5]=“数学0031”;
学生阵列[6]=“CSCI 0026”;
学生阵列[7]=“PHYS 0105L”;
学生阵列[8]=“PHYS 0105”;
学生阵列[9]=“CSCI 0013”;
学生阵列[10]=“英语001C”;
for(int i=0;i”+类列表);
}
}
公共静态void main(字符串[]args){
一个o=新的一个();
o、 课程();
}
}