槐序听雨声 2021-02-22 23:32 采纳率: 25%
浏览 124
已采纳

如何判断输入的字符串是字母或数字?(JAVA)

编程萌新,最近写了一段代码,想判断从控制台输入的字符串是否符合规范。

但是我写的代码总是只记录最后一个字符的测试结果(也就是说如果我输入Hello%$ 就会返回false,但是如果我输入He%$llo就会返回True)。

想请教一下各位前辈们,如何写才能做到检查字符串中每一个字符后再返回整体结果?

 

以下是我写的代码:

public static boolean check(String str) {
    char[] c = str.toCharArray(); //把字符串转换成char,逐一检查
    boolean cCheck = false;
    for (int i = 0; i < c.length; i++) {
        char a = c[i];
        if (a >= 'a' && a <= 'z') {  //检查是否在小写字母范围
            cCheck = true;  
        } else if (a >= 'C' && a <= 'Z') { //检查是否在大写字母范围
            cCheck = true;
        } else if (a >= '0' && a <= '9') { //检查是否是数字
            cCheck = true;
        } else {
            cCheck = false;  //如果都不是则返回false
        }
        //System.out.println(c[i]);
    }
    return cCheck; //返回检查数据
}

感谢任何帮助和回答!谢谢!

 

 

  • 写回答

3条回答 默认 最新

  • 幻灰龙 2021-02-23 00:13
    关注

    你的cCheck每次进入循环都会被设置一次,最后一次进入循环的是个字母就会最后一次设置为true,这样就导致你观察到的想象。

     

    解决办法:如果遇到第一个不符合要求的就返回false;

    public static boolean check(String str) {
        char[] c = str.toCharArray(); //把字符串转换成char,逐一检查
        boolean cCheck = false;
        for (int i = 0; i < c.length; i++) {
            char a = c[i];
            if (a >= 'a' && a <= 'z') {  //检查是否在小写字母范围
                cCheck = true;  
            } else if (a >= 'C' && a <= 'Z') { //检查是否在大写字母范围
                cCheck = true;
            } else if (a >= '0' && a <= '9') { //检查是否是数字
                cCheck = true;
            } else {
                // 这里直接返回false,不再继续判断后续字符
                return false;  //如果都不是则返回false
            }
            //System.out.println(c[i]);
        }
        return cCheck; //返回检查数据
    }

    进一步,并不需要nCheck变量:

    public static boolean check(String str) {
        char[] c = str.toCharArray(); //把字符串转换成char,逐一检查
        for (int i = 0; i < c.length; i++) {
            char a = c[i];
            boolean isLowercaseAlpha = a >= 'a' && a <= 'z';
            boolean isUppercaseAlpha = a >= 'C' && a <= 'Z';
            boolean isInt = a >= '0' && a <= '9';
            if ( isLowercaseAlpha || isUppercaseAlpha || isInt) {  
                // 大小写字母或者整数
            } else {
                // 遇到第一个不符合要求的字符,返回false
                return false;  
            }
        }
        
        // 这里一定都是符合要求的字符,返回true
        return true; 
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥65 LineageOs-21.0系统编译问题
  • ¥30 关于#c++#的问题,请各位专家解答!
  • ¥15 App的会员连续扣费
  • ¥15 不同数据类型的特征融合应该怎么做
  • ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
  • ¥15 用联想小新14Pro
  • ¥15 multisim中关于74ls192n和DSWPK开关仿真图分析(减法计数器)
  • ¥15 w3wp,exe 中发生未处理的 Microsoft ,NETFramework 异常。
  • ¥20 C51单片机程序及仿真(加减器)
  • ¥15 AQWA | 水动力分析 二阶波浪力