2015-01-02 164 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感謝您強調我的錯誤,我編輯了我的代碼。請回復現在? –