2015-01-02 3 views
-5

Я написал программу java, но я не могу работать, как хочу. Пользователь вводит строку, такую ​​как DDD-DDDD-DDD, и программа возвращает SSN для каждого D, но моя программа возвращает только SSN для одного D. если ı введите 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

В вашем коде вы возвращаете '' недопустимый SSN'', если '' 'есть что-либо, кроме' 'D ''. Чего ты ожидал? – August

+0

Какой смысл пытаться заменить букву «D», когда пользователю предлагается ввести цифры ??? – laune

+0

Функция 'check()' будет возвращать '' SSN'' (громоздким способом), если заданы '' D ''и' 'недопустимые SSN'' в противном случае. Не уверен, как вы ожидаете, что он сделает что-нибудь еще. – Biffen

ответ

2

Ваш код работает точно так, как вы написали:

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

Поскольку вы передаете в DDD-DD-DDDD, то

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

может НИКОГДА не быть правдой.

+0

Да, поэтому OP жалуется, что код не работает для 'DDD' и других не-D строк. –

+0

Несчастная комбинация высказываний ... Но я понимаю, что вы имеете в виду. Но SSN не является буквально «DDD-DD-DDDD», и все строковые сравнения ввода с любой комбинацией D немного незначительны. – laune

1

Вы должны заменить каждый D с SSN, то вы должны пройти 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 Спасибо, что выделили мою ошибку, я редактировал свой код. ответьте прямо сейчас? –

Смежные вопросы