有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java比较字符串整数问题

我有一个扫描仪,可以读取7个字符的字母数字代码(由用户输入)。字符串变量称为“code”

代码的最后一个字符(第7个字符,第6个索引)必须是数字,而其余字符可以是数字或字母

因此,我试图创建一个catch,如果代码中的最后一个字符不是数字(从0到9),它将阻止该方法的其余部分执行

然而,我的代码并没有像预期的那样工作,因为即使我的代码以0到9之间的整数结尾,if语句也会得到满足,并打印出“代码中的最后一个字符是非数字的”)

示例代码:45m4av7

CharacterAtEnd按原样打印为字符串7。 然而,我的程序仍然告诉我,我的代码以非数字结尾。 我知道我的数值是字符串,但这不重要,不是吗? 此外,我显然无法将实际整数值与“|”进行比较,这就是我使用字符串的主要原因。valueOf,并取0-9的字符串

String characterAtEnd = String.valueOf(code.charAt(code.length()-1));
System.out.println(characterAtEnd);

 if(!characterAtEnd.equals(String.valueOf(0|1|2|3|4|5|6|7|8|9))){
     System.out.println("INVALID CRC CODE: last character in code in non-numerical.");
     System.exit(0);

我一辈子都搞不懂为什么我的程序告诉我我的代码(末尾有一个7)以非数字结尾。它应该跳过if语句并继续。对吧


共 (1) 个答案

  1. # 1 楼答案

    这里的String^{}方法将起作用:

    String digits = "0123456789";
    digits.contains(characterAtEnd); // true if ends with digit, false otherwise
    

    String.valueOf(0|1|2|3|4|5|6|7|8|9)实际上是"15",这当然永远不能等于最后一个字符。这应该是有意义的,因为0|1|2|3|4|5|6|7|8|9使用整数数学计算为15,然后将其转换为字符串

    或者,试试这个:

    String code = "45m4av7";
    char characterAtEnd = code.charAt(code.length() - 1);
    System.out.println(characterAtEnd);
    
    if(characterAtEnd < '0' || characterAtEnd > '9'){
        System.out.println("INVALID CRC CODE: last character in code in non-numerical.");
        System.exit(0);
    }