【问题标题】:How to check if the input string from Scanner Util matches an initial string如何检查来自 Scanner Util 的输入字符串是否与初始字符串匹配
【发布时间】:2018-10-02 04:23:06
【问题描述】:

所以目前我有一个设置,用户从扫描仪实用程序输入一个数字,我有一个布尔值来检查输入的字符串是否为 4 位数字,并且只有数字我如何创建一个布尔值来检查它与另一个字符串的比较实例:

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?
}

在这个例子中,我预先设置了一个 pin,我想检查用户通过扫描仪工具输入的内容是否完全匹配。这可能吗?

【问题讨论】:

  • 请注意isInt 不是必需的,您可以使用isValid 检查输入是否为有效整数
  • //这里放什么?你可以用return pin.equals(s):
  • 还要注意ping#末尾的锐利是java中的非法字符!
  • 在第二段代码中你也不需要检查isInt
  • @YCF_L 啊,是的,谢谢你指出我只是改变了它,我没有想到#的结尾

标签: java string boolean java.util.scanner


【解决方案1】:

您可以使用.equals() 方法来比较两个值以查看它们是否匹配。

pinnum.equals(s)

更详细的解释可以在这里找到:How do I compare strings in Java?

【讨论】:

  • 我只是把它留在那里以表明它是用户输入的密码而不是硬编码的密码 - 但是你是对的 - 不应该使用这些字符!
  • 感谢您的代码,感谢留下链接的人也将检查更多内容,因为我稍后会扩展更多内容!
【解决方案2】:

如果你真的在做验证,为了单一职责 (SOLID Principles),最好在另一个类中拥有这种验证的东西。在这种情况下,您可以使用 .equals() 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多