Java 建议,写社会保障代码

Java 建议,写社会保障代码,java,substring,reformat,Java,Substring,Reformat,我是java和我的班级的新手,我们需要编写一个程序,其中用户以XXXXXXXXX的形式输入社会保障代码,然后以XXXX-XX-XXX的形式返回。 例如,如果代码是123456789,它将作为123-45-6789返回给他们 这是我所拥有的,我想使用子字符串来完成它 导入java.util.Scanner public class HWSocialSecuritySh { public static void main (String [] args) { Scanner reader

我是java和我的班级的新手,我们需要编写一个程序,其中用户以XXXXXXXXX的形式输入社会保障代码,然后以XXXX-XX-XXX的形式返回。 例如,如果代码是123456789,它将作为123-45-6789返回给他们

这是我所拥有的,我想使用子字符串来完成它

导入java.util.Scanner

public class HWSocialSecuritySh  {
public static void main (String [] args) {
    Scanner reader = new Scanner (System.in);

    String name;
    int ssn;
    System.out.print ("Enter nine digit social security number without dashes: ");
    ssn= reader.nextInt();
    System.out.print("Your formatted social security number is: ");
    System.out.println(snn.substring(,) );

   }
   }
public class HWSocialSecuritySH  {
public static void main (String [] args) {
    Scanner reader = new Scanner (System.in);

    String name;
    String Ssn="ssn";

    System.out.print ("Enter nine digit social security number without dashes: ");
    Ssn= reader.nextLine();
    System.out.print("Your formatted social security number is: ");
    System.out.println (Snn.substring(0,3) +"-"snn.substring(4,6) + "-"snn.substring(7,9);

}
}
这是新代码

导入java.util.Scanner

public class HWSocialSecuritySh  {
public static void main (String [] args) {
    Scanner reader = new Scanner (System.in);

    String name;
    int ssn;
    System.out.print ("Enter nine digit social security number without dashes: ");
    ssn= reader.nextInt();
    System.out.print("Your formatted social security number is: ");
    System.out.println(snn.substring(,) );

   }
   }
public class HWSocialSecuritySH  {
public static void main (String [] args) {
    Scanner reader = new Scanner (System.in);

    String name;
    String Ssn="ssn";

    System.out.print ("Enter nine digit social security number without dashes: ");
    Ssn= reader.nextLine();
    System.out.print("Your formatted social security number is: ");
    System.out.println (Snn.substring(0,3) +"-"snn.substring(4,6) + "-"snn.substring(7,9);

}
}

实际上,更合适的方法是使用a和a表示a,其中包含社会保险号码的子组,如下所示:

如前所述,社会保障号码虽然可以表示为整数,但实际上是一串数字:它作为一个数字是毫无意义的。因此,您应该将其存储为
字符串
,而不是
int


现在,在您的新代码中,您几乎做到了这一点,但仍然存在一些问题:

  • 它是
    String
    ,而不是
    String
  • 既然
    ssn
    是一个字符串,就不能将它分配给
    reader.nextInt()
    的结果,因为它返回一个
    int
    。相反,您需要使用
    reader.nextLine()
  • 第二个和第三个
    substring()
    调用的范围稍有偏离。请参阅该方法的

您为什么将社会保险号码作为整数读取?您想格式化它(而不是用它进行计算),所以不妨将其作为字符串读取。您知道字符串连接吗?您可以写“a”+“b”,它将以字符串形式返回“ab”。类似地,如果字符串a=“a”和字符串b=“b”,字符串c=a+b将使字符串c成为“ab”。在我看来,如果您理解String类的
charAt()
方法,那么这个问题的其余部分就无关紧要了。@Kon ya我知道,那么您如何准确地更正它,请以真实的代码形式写出它,而不仅仅是解释它。谢谢您的帮助,但我只想使用字符串,因为我们还没有学会如何使用匹配器。所以你能用字符串来写吗。谢谢:)@ShadonHamedani使用
substring()
非常简单——您在哪部分遇到问题?只需使用适当的索引进行3次单独的子字符串调用,并将结果与中间的
“-”
s连接起来。我也很新,这一切对我来说太简单了,我该如何将破折号添加到子字符串中?@ShadonHamedani在使用
子字符串()
提取组后,您可以使用
group1+'-'+group2+'-'+group3
substring1+“-”+substring2