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

如何判断输入的字符串是字母或数字?(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条)

报告相同问题?

悬赏问题

  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置
  • ¥15 如何解决y_true和y_predict数据类型不匹配的问题(相关搜索:机器学习)
  • ¥15 PB中矩阵文本型数据的总计问题。
  • ¥15 MATLAB卫星二体模型仿真
  • ¥15 怎么让数码管亮的同时让led执行流水灯代码
  • ¥20 SAP HANA SQL Script 。如何判断字段值包含某个字符串