建议,编写社会保障代码



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

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

import 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(,) );
   }
   }

这是新代码

import java.util.Scanner;

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);
}
}

实际上,更合适的方法是使用带有PatternMatcher,该表示包含社会保险号子组作为捕获组的正则表达式:

final Pattern ssnFormat = Pattern.compile("^(\d{3})(\d{2})(\d{4})$");
Matcher m = ssnFormat.matcher(ssn);  // make ssn a string!
if (m.find()) {
    System.out.printf("%s-%s-%s%n", m.group(1), m.group(2), m.group(3));
} else {
    System.err.println("Enter a valid social security number!");
}

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


现在,在您的新代码中,您几乎就在那里,但仍有一些问题:

  • 这是String,而不是string
  • 现在ssn是一个字符串,你不能把它分配给reader.nextInt()的结果,因为这会返回一个int。相反,您需要使用 reader.nextLine() .
  • 第二次和第三次substring()调用的范围略有偏差。 请参阅该方法的文档。

相关内容

  • 没有找到相关文章

最新更新