только числовые числа с контролем

Во-первых, я здесь новый человек. Мне нужно задать один вопрос.

Scanner klavye = new Scanner(System.in);

System.out.println("DDD-DD-DDDD enter bank number digit: ");
String hesapNo = klavye.nextLine();

if(hesapNo.length() != 11) {
   System.out.println("You need to enter number with 11 digit");
}
else {
   if(hesapNo.charAt(3) == '-' && hesapNo.charAt(6) == '-') {
       System.out.println(hesapNo + " is valid");
   }
   else {
      System.out.println(hesapNo + " is not valid");
   }
}

Я хочу взять только цифру, но если я напишу ниже так: ABC-DC-SMND "Счет верный", как я могу решить эту проблему?

Спасибо за проявленный интерес.


person Halid Balçıklı    schedule 11.01.2018    source источник
comment
Думаю, это хорошая возможность изучить регулярные выражения. См. stackoverflow.com/questions/22749891/   -  person PM 77-1    schedule 11.01.2018


Ответы (2)


Вы можете сделать это с помощью регулярных выражений и цикла, чтобы подсказывать пользователю до тех пор, пока он не введет допустимый ввод.

Scanner klavye = new Scanner(System.in);

System.out.println("DDD-DD-DDDD enter bank number digit: ");
String hesapNo;
final String regexPattern = "\\d{3}-\\d{2}-\\d{4}";
do {
   hesapNo = klavye.nextLine();
   System.out.println("You need to enter a number with 11 digit with pattern: DDD-DD-DDDD");
}
while(!hesapNo.matches(regexPattern));

System.out.println(hesapNo + " is valid");
person Onur A.    schedule 11.01.2018

Это можно сделать с помощью простого регулярного выражения, используя String.matches:

Scanner klavye = new Scanner(System.in);

System.out.println("DDD-DD-DDDD enter bank number digit: ");
String hesapNo = klavye.nextLine();

if(hesapNo.matches("\\d{3}-\\d{2}-\\d{4}")){ // <-- this regex matches your pattern DDD-DD-DDDD
    System.out.println(hesapNo + " is valid");
}else{
    System.out.println("You need to enter number with 11 digit");
}

ИЗМЕНИТЬ

Если вы хотите продолжать запрашивать ввод до тех пор, пока не будет введен действительный, вы можете сделать это:

Scanner klavye = new Scanner(System.in);
String hesapNo;
boolean validInput;

System.out.println("DDD-DD-DDDD enter bank number digit: ");
do {
    hesapNo = klavye.nextLine();
    validInput = hesapNo.matches("\\d{3}-\\d{2}-\\d{4}");
    if (!validInput) { // if invalid input then warn the user
        System.out.println("Your bank number must be in DDD-DD-DDDD format");
    }
} while (!validInput); // loop until a valid input is provided
System.out.println(hesapNo + " is valid");
person Juan Carlos Mendoza    schedule 11.01.2018