Как проверить, соответствует ли входная строка из Scanner Util исходной строке

MartinM спросил: 28 марта 2018 в 04:28 в: java

Итак, в настоящее время у меня есть настройка, в которой пользователи вводят номер из утилиты scanner, и у меня есть логическое значение, которое проверяет, была ли введенная строка 4 цифрами и является только цифрами, как я могу создать логическое значение, которое проверит его по сравнению с другой строкой для instance:

String pin = "6357";

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

import java.security.MessageDigest;
import java.util.Scanner;public class pin
{public static void main( String[] args ) {
    Scanner kbd = new Scanner( System.in );
    String      pin;
    System.out.print( "Enter pin: " );
    pin = kbd.next();
    System.out.println( "Valid: " + isValid(pin) );
    System.out.println( "Is int: " + isInt(pin) );
    System.out.println( "MD5: " + md5HexString(pin) );
}public static boolean isInt( String s ) {
    try {
        int i = Integer.parseInt( s );
        System.out.println( "Int: " + i );
        return true;
    }
    catch( Exception ex ) {
        return false;
    }
}public static boolean isValid( String s ) {
    return s.matches( "\\d{4}" ); // must be 4 digits long
}

Как видно, это не сравнивает его с другой существующей строкой, так что, если бы у меня было что-то вроде этого:

import java.security.MessageDigest;
import java.util.Scanner;public class pin
{
   String pinnum = "6357";public static void main( String[] args ) {
    Scanner kbd = new Scanner( System.in );
    String      pin;
    System.out.print( "Enter pin: " );
    pin = kbd.next();
    System.out.println( "Valid: " + isValid(pin) );
    System.out.println( "Is int: " + isInt(pin) );
    System.out.println( "MD5: " + md5HexString(pin) );
}public static boolean isInt( String s ) {
    try {
        int i = Integer.parseInt( s );
        System.out.println( "Int: " + i );
        return true;
    }
    catch( Exception ex ) {
        return false;
    }
}public static boolean isValid( String s ) {
    //what to put here?
}

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

2 ответа

Есть решение
YCF_L Connor J ответил: 28 марта 2018 в 04:36

вы можете использовать метод .equals(), чтобы сопоставить два значения, чтобы проверить, совпадают ли они.

pinnum.equals(s)

более подробное объяснение можно найти здесь: Как сравнить строки в Java?

Connor J ответил: 28 марта 2018 в 04:37
я просто оставил его там, чтобы показать, что пользователь ввел пин, а не жестко закодированный пин - но да, вы правы - не следует использовать эти символы!
MartinM ответил: 28 марта 2018 в 04:38
Спасибо за код и спасибо за то, что кто-то оставил ссылку, проверит это больше, так как я буду расширяться позже!
raydex ответил: 28 марта 2018 в 04:40

Если вы действительно работаете над валидацией, ради Единой Ответственности (Принципы SOLID) лучше иметь такие вещи валидации в другом классе. В этом случае вы можете использовать метод .equals ().