槐序听雨声 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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵