我如何确定用户输入的数字是否包含正确数量的数字和-标记

时间:2018-10-13 01:22:47

标签: java string char

我是Java编程的新手,我们目前正在学习有关字符串和字符的知识。我的实验室任务是让用户输入他们的SSN,并由程序确定它是否为有效条目。输入的格式必须为123-45-6789。到目前为止,这是我所做的: 包实验室;

(*)

我一直在这里的论坛上查找并找到了一些不同的答案,但是在我的代码中尝试它们时,出现了问题。我不希望有人为我写出来。我将使用哪种类型的方法来检查字符0-2、4-5、7-10是否包含数字,以及3和6处的字符是否包含-。 显然module mytype_m implicit none type MyType integer :: i integer, dimension(:,:), allocatable :: A, B, C contains procedure :: init => MyType_init ! (*) a type-bound procedure end type contains subroutine MyType_init( this, i ) class(MyType), intent(inout) :: this ! (*) use "class" instead of "type" ... end subroutine end module program main ... do i = 1, N call array( i ) % init( i ) ! (*) use a type-bound procedure ... enddo ... end program import java.util.Scanner; public class Lab4 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter a valid SSN"); String ssn = input.nextLine(); System.out.print(ssn); if (ssn.length() == 11) { if } } } 会有所帮助,但是我不确定如何写出确定该条件的条件。

这个问题问How to tell if a SSN is in the right format 这似乎是完全相同的作业,我假设我们使用的是同一本书,实际上并未给出答案,尽管它被标记为重复,但我找不到原始问题。我们也还没有学习数组,所以我正在寻找一个更简单的答案,尽管我敢肯定,使用数组的示例除了简单的答案之外不会受到伤害,因此我可以提高自己的技能。

编辑更新: 尽管我敢肯定有更好的方法可以做到这一点,但它确实有效。

public static void main(String [] args){

charAt

}

1 个答案:

答案 0 :(得分:0)

首先,我将避免嵌套ifs:

if (foo==bar) {
     if(that!=other) {
         if(...)
     }
}

这会很快导致混乱。 尝试使if语句并行,而不是嵌套。像这样:

if (ssn.length() != 11) {
    System.out.print("SSN must be 11 letters long");
    return;
}

if (ssn.charAt(3)!='-' || ssn.charAt(7)!='-') {
    System.out.print("SSN must be 11 letters long");
    return;
}

第二,您需要检查一个字符是否为数字。您可以通过简单的数字比较来做到这一点:

if (ssl.charAt(0)<'0' || ssl.charAt(0)>'9') {
    System.out.print("Char at 0 was not a digit");
    return;
}

以单独的方法提取重复部分(如上述的is-digit检查)也是一个好习惯。这样,您就可以避免重复自己的操作,从而可以更好地控制程序。

希望这会有所帮助。