В данной части кода пользователю необходимо ввести номер банковской карты, а программа должна проверить, чтобы он соответствовал шаблону XXXX-XXXX-XXXX-XXXX. Я разделяю строку CardNumber на 4 подстроки и проверяю, чтобы кол-во этих подстрок равнялось 4 и кол-во символов в каждой подстроке тоже равнялось 4. Если я все правильно понимаю, то кол-во подстрок - это subCardNumber.length, а сами подстроки и их длина - это элементы массива subCardNumber[]. Если хотя бы одно из этих условий неверно, должна выйти ошибка, однако, какие бы неправильные номера карт я не вводил, всегда выдается сообщение, что номер карты верный, т.е. выполняется только условие else. Вот сам код:
public static void main(String[] args) {
System.out.println("Здравствуйте. Введите номер карты:");
Scanner sc = new Scanner(System.in);
String CardNumber = sc.nextLine();
String[] subCardNumber;
String delimeter = "-";
subCardNumber = CardNumber.split(delimeter);
if (subCardNumber.length != 4 & subCardNumber[0].length() != 4 & subCardNumber[1].length() != 4 & subCardNumber[2].length() != 4 & subCardNumber[3].length() != 4)
System.out.println("Ошибка. Введите верный номер карты:");
else System.out.println("Верный номер карты");
}
Ошибка, очевидно, в логическом И, нужно использовать логическое ИЛИ, если вы ожидаете хотя бы одну ошибку. В данном случае, ваше исправление такое:
if (subCardNumber.length != 4 | subCardNumber[0].length() != 4 | subCardNumber[1].length() != 4 | subCardNumber[2].length() != 4 | subCardNumber[3].length() != 4)
Но, как по мне, ваш способ решения немного усложненный, как на счёт использования регулярных выражений?
С регулярными выражениями всё в разы упрощается и выглядит так:
public static void main(String[] args) {
System.out.println("Здравствуйте. Введите номер карты:");
Scanner sc = new Scanner(System.in);
String CardNumber = sc.nextLine();
if (Pattern.matches("^\d{4}-\d{4}-\d{4}-\d{4}$", CardNumber))
System.out.println("Верный номер карты");
else System.out.println("Ошибка. Введите верный номер карты:");
}
Как вам такой вариант? :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Требуется анализировать работу батареи в реальном времени так, чтобы получить предположительные сведения о том, сколько осталось времени...
При создании уведомления я получаю значение Uri такого формата
Не могу понять как это сделать, уже все перепробовалTextArea находится в классе BotOverviewController, а передаю данный с класса MainApp
Дано - входящий массив; из которого нужно убрать все дубликаты и вернуть число, состоящее из оставшихся чисел массиваРеализовать нужно через...