Java Программирование: 2 способа проверить, является ли входная строка alphanumeri c и имеет ли входная строка префикс имени пользователя в нем - PullRequest
0 голосов
/ 24 марта 2020

Привет, все два метода, приведенные ниже, выглядят неправильно. Мне было интересно, если вы, ребята, можете помочь мне выяснить, почему?

Метод 1: логический isAlphanumeri c (ключ String)

* Этот метод должен проверять, является ли ключ String variable " "имеет по крайней мере одну букву и один номер. Если это так, то метод должен возвращать логическое значение TRUE. Однако это не так и возвращает значение FALSE.

Первый для l oop означает не проверять, есть ли хотя бы один символ в строковой переменной «ключ», который содержит букву. Выход из l oop и ввод второй для l oop, который должен проверять, есть ли какие-либо символы в строковой переменной 'key', которые являются ди git или числом.

оператор if в конце проверяет, есть ли ОБА как минимум 1 буква и 1 цифра в строковой переменной 'key'. *


Метод 2: логическое значение содержитNamePrefix (строковый ключ, строковое имя)

* Этот метод предназначен для проверки наличия префикса, по крайней мере, из 2 или более последовательных символов, начиная с первой буквы, найденной в строковой переменной «name», которая находится внутри строковой переменной «key»

Например:

Ключ строки = "Johnny_Ca sh"; Строка name = "Джонни";

метод должен затем возвращать логическое значение TRUE, так как "Jo" - это префикс из 2 символов (по крайней мере, 2 необходимо) в строковой переменной 'name', который также можно найти в переменной String «ключ». Следующее также вернет значение true: Joh, John, Johnn, Johnny.

Опять же, этот метод, к сожалению, не возвращает логическое значение TRUE ... *

HELP!


public class main {
    public static void main(String[] args) {
        String key = "Johnny_Cash";
        String name = "Joh7";

        System.out.println(isAlphanumeric(key));
        System.out.println(containsNamePrefix(key, name));
    }

public static boolean isAlphanumeric(String key) {
    char currentCharacter;
    boolean letterPresent = false;
    boolean numberPresent = false;
    boolean isAlphanumeric = false;
    for(int i = 0; i < key.length(); ++i) {
        currentCharacter = key.charAt(i);
        if(Character.isLetter(currentCharacter)) {
            letterPresent = true;
            break;
        }
    }
    for(int i = 0; i < key.length(); ++i) {
        currentCharacter = key.charAt(i);
        if(Character.isDigit(currentCharacter)) {
            numberPresent = true;
            break;
        }               
    }
    if(letterPresent && numberPresent) { // at least one letter and one number in key
        isAlphanumeric = true;
    }
    return isAlphanumeric;      
}

public static boolean containsNamePrefix(String key, String name) {
    boolean keyContainsPrefix = false;
    String prefix;
    for(int i = 0; i < name.length(); ++i) {
        prefix = name.substring(0, i+1);
        if(key.contains(prefix)) {
            keyContainsPrefix = true;
            break;
        }
    }                 
    return keyContainsPrefix;
}

}

ВЫХОД:

false true

/ * РЕДАКТИРОВАТЬ: Эй, ребята, извините, приведен фрагмент ПОЛНОГО кода по запросу. Извините, ребята, метод 2 сейчас работает нормально, но метод один до вывода false. * /

РЕДАКТИРОВАТЬ 2: Эй, ребята, извините, код работает как шарм ... Оказывается, Али был прав. Мне просто нужно вздремнуть ...

Ответы [ 3 ]

0 голосов
/ 24 марта 2020
public static boolean containsNamePrefix(String key, String name) {
    boolean keyContainsPrefix = false;
    String prefix;
    for(int i = 0; (i+1) < name.length(); ++i) { // 1. change here
        prefix = name.substring(i, i+2); // 2. increment your substring
        if(key.contains(prefix)) {
            keyContainsPrefix = true;
            break;
        }
    }
    return keyContainsPrefix;
}
0 голосов
/ 24 марта 2020

Оба метода хороши в отношении характеристик каждого! Проблема может заключаться в том, как вы обрабатываете результаты каждого вызова, можете ли вы поделиться той частью кода, где вы их вызываете.

0 голосов
/ 24 марта 2020

На вопрос 1: я не вижу здесь ничего плохого. Вы не можете отладить метод с помощью короткой строки, например, "a1"? Вы можете просто запустить его шаг за шагом и легко найти ошибку.

Кстати: метод может быть значительно упрощен, но, думаю, дело не в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...