我是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
}
答案 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检查)也是一个好习惯。这样,您就可以避免重复自己的操作,从而可以更好地控制程序。
希望这会有所帮助。