İşte benim kodum, bu sorunun veya benzerliğin daha önce yayınlandığını anlıyorum. Karşılaştığım çatışma, "regex" kullanmamam gerekiyordu. Bu programın yazılmasının daha basit bir yolu olduğunu biliyorum, ama sınıfımda henüz gitmiş olduğumuz bir şey değil. Ben kolay cevaplar, sadece ipuçları arıyorum DEĞİL.Bir SSN'yi çok spesifik bir şekilde doğrulamam gerekiyor
public class SSNValidatorApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ssn = Validator.getSSN(sc, "Enter a Social Security Number: ");
System.out.println("You entered: " + ssn);
}
}
Yani bu benim kodunda meselenin istemeniz gerekir sonunda geliyor görüntü çıkışı için birinci sınıf,
public static boolean isDigit(char c) {
return Character.isDigit(c);
}
public static boolean isDash(char c) {
return (c == '-');
}
public static String getSSN(Scanner sc, String prompt) {
System.out.println(prompt);
String ssn = sc.next();
String tryAgain = "y";
while (tryAgain.equalsIgnoreCase("y")) {
if (ssn.length() != 11) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
for (int i = 0; i < ssn.length(); i++) {
if (i <= 2) {
if (!isDigit(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
else if (i == 3) {
if (!isDash(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
}
else if (i == 6) {
if (!isDash(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
}
else if (i > 6) {
if (!isDigit(ssn.charAt(i))) {
System.out.println(ssn + " is not a valid SSN");
sc.nextLine();
}
}
}
}
tryAgain = Validator.getString(sc, "Would you like to re-enter your SSN? (y/n): ");
System.out.println();
}
return ssn;
}
olan "sen istiyorum tekrar girmek SSN? Cevapladıkları y ya da n tek sorun, cevap verdiklerinde "" DDD-DD-DDDD "nin geçerli bir SSN olmadığını söylemeye devam ediyorlar./Açıklamalarım var iken
Teşekkür ederiz
Kodunuzu ayıklamanız gerekir. Bir hata mesajı verdiğiniz her şey, döngüden kopmaz ve hata mesajlarını yazdırmaya devam etmezsiniz. –
Düzenli bir ifade kullanın. Burada birçok farklı ifade bulabilirsiniz: http://www.regxlib.com/Search.aspx?k=ssn –
'i <= 2' ve' i == 3'ün her ikisinin de doğru olmasını nasıl bekliyorsunuz? –