2015-09-25 38 views
2

这是我迄今为止。这个程序的基本功能是获取用户输入(他们的社会安全号码),验证他们的输入格式是否正确(XXX-XX-XXXX),将已验证的输入添加到数组列表中。现在最后一步是创建一个toString()方法,该方法将返回一个人类可读的字符串表示形式,其中包含添加到数组中的所有社会安全号码。此方法必须使用for循环,并且每行必须打印1个社会安全号码条目。例如:返回多个数组使用for循环内部toString类

“您输入的社会保障号码为:
345-43-5674
456-62-8435
910-70-0053”

package SSNServerStorage; 

public class SSNArray 
{ 
    private String[] SSNNumber; 
    private int arrayCount; 

    public SSNArray(){ 
     SSNNumber = new String[300]; 
     arrayCount = 0; 
    } 

    public SSNArray(int arraySize){ 
     SSNNumber = new String[arraySize]; 
     arrayCount = 0; 
    } 

    public String[] getSSNNumber(){ 
     return SSNNumber; 
    } 

    public int getArrayCount(){ 
     return arrayCount; 
    } 

    public boolean validateSSNNumber(String SSNFormat){ 
     return SSNFormat.matches("\\d{3}-\\d{2}-\\d{4}"); 
    } 

    public String addSSN(String SSNFormat){ 
     if (validateSSNNumber(SSNFormat)){ 
      return SSNNumber[arrayCount++] = SSNFormat; 
     }else{ 
      return null; 
     } 
    } 

    public String toString(){ 
     System.out.println("The Social Security Numbers you entered are:"); 

     for() 
     { 
      // 
      // 
      // 
      // 
     } 
    } 
} 
+0

将您的for循环放入测试类 –

+1

尝试使用StringBuilder –

+1

您是否尝试过任何操作或仅仅是为您编写代码的请求?你不应该在'toString'方法中输出输出。应该使用该方法创建并返回对象的字符串表示形式,而不是打印它。 – fabian

回答

2

你可以声明String以连接所有SSNumber。

@Override 
public String toString(){ 
    String str = "The Social Security Numbers you entered are:\n"; 
    for(int x=0; x< arrayCount; x++) 
     str += SSNumber[x] + "\n"; 
    return str; 
} 

既然是toString()方法,你将要返回类的字符串表示,而不是做println()的。

+2

**从不**在循环中使用'String + = String'。使用'StringBuilder'。 – Andreas

+0

@Andreas根据我在大学和学院的知识,这看起来像是一个学校作业,他们不希望你使用StringBuilder。字符串就足够了。 – user3437460

+0

@Andreas谢谢花花公子,改变了。 – user3437460

0
StringBuilder strbul = new StringBuilder() 
    for(int i=0;i<SSNNumber.length;i++) 
      { 
       strbul.append(SSNNumber[i]).append("\n"); 
      } 
return strbul.toString(); 
+0

循环应限制为'arrayCount'。 – Andreas

0

正好连接:

@Override 
public String toString(){ 
String s = "The Social Security Numbers you entered are:\n"; 
    for(int i =0; i < SSNNumber.length; i ++) 
     s +=SSNNumber[i]+"\n"; 
    return s; 
} 
+0

**从不**在循环中使用'String + = String'。使用'StringBuilder'。 – Andreas

+1

另外它看起来并不像数组中的每个元素都需要包含一个String。 – fabian

+0

循环应限制为'arrayCount'。 – Andreas

4

toString方法没有正确的签名,它应该返回String。这应该做你需要的东西:

@Override 
public String toString(){ 
    StringBuilder sb = new StringBuilder("The Social Security Numbers you entered are:\n"); 

    for (int i = 0; i < arrayCount; i++) { 
     sb.append(SSNNumber[i]).append("\n"); 
    } 

    return sb.toString(); 
} 

还记得使用@Override注解。

+0

@Andreas你是对的,感谢你的领导 - 没有注意到一读。答案已更正。 –