2015-01-02 95 views
-5

我写了一个java程序,但我无法运行,因为我想。用户输入字符串如DDD-DDDD-DDD并且程序返回每个D的SSN,但是我的程序只返回一个D的SSN。如果我输入DDD,它将返回无效的SSN。需要我的程序帮助

import java.util.Scanner; 
import java.lang.String; 

public class Cheking { 

    public static void main(String[] args) { 
     Scanner input = new Scanner (System.in); 
     System.out.println("Enter a social security number in the format DDD-DD-DDDD"); 
     String x = input.nextLine(); 
     String y = check(x); 
     System.out.println(y); 
    } 
    public static String check (String s){ 
     if (s.equals("D")){ 
      "D".replace("D", "SSN"); 
      return "D".replace("D", "SSN"); 
     } 

     else 
     { 
     s = "invalid SSN"; 
     return s; 
     } 
    } 
} 
+2

在你的代码中,如果's'除''D''之外任何东西都返回''无效的SSN'''。你期望什么? – August

+0

当用户被要求输入数字时,试图替换字母'D'有什么意义? – laune

+0

如果给出“D”和“无效SSN”,'check()'函数将返回'“SSN”'(以麻烦的方式)'否则。不知道你如何期待它做任何事情。 – Biffen

回答

2

你的代码工作完全按照你写的:

if (s.equals("D")){ 

既然你在DDD-DD-DDDD通过,那么

"DDD-DD-DDDD".equals('D') 

可以NEVER是真实的。

+0

是的,这就是为什么OP被抱怨的代码不会对'DDD'和其他非d字符串的工作。 –

+0

陈述的不愉快的组合...但我明白你的意思。但是SSN并不是字面意义上的“DDD-DD-DDDD”,并且输入与D的任何组合的输入的所有字符串比较都略有差异。 – laune

1

你必须每个DSSN那么你必须通过DDD-DD-DDDD输入到你的代码替换。

public static String check (String s){ 
    if (s.equals("DDD-DD-DDDD")){ // First check that your sting is DDD-DD-DDDD 
     return s.replace("D", "SSN"); // replace each D with SSN 
    }else{ 
     s = "invalid SSN"; 
     return s; 
    } 
} 
+0

@BalusC感谢您强调我的错误,我编辑了我的代码。请回复现在? –