有 Java 编程相关的问题?

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

java如何将来自jtextfield(.getText())的字符串输入与另一个string[]数组进行比较+少数条件

我需要说的是,如果在点击按钮时输入(文本字段)为空,则打印一条消息。如果输入中的一个字符不等于“legal”列表中的一个元素,则打印另一条错误消息。如果输入中的所有字符都很好,则将它们添加到某个列表中并打印消息msg

    String[] legal={"a", "b", "c", "d" ,"e" ,"f" ,"g" ,"h" ,"i" ,"j" ,"k" ,"l" ,"m" 
 ,"n","o","p","q","r","s","t","u","w","x","y","z","-","_"}; 

    if(e.getSource() == add){

        if (txt.getText().equals("")){

            content.removeAll();
            content.add(empty);           
            content.revalidate();

        }  
        String[] splited = txt.getText().toLowerCase().split("");
        for (int t=0;t<splited.length;t++) {
            for (int u=0;u<legal.length;u++){
                if(splited[t] != legal[u]){

                    content.removeAll();
                    content.add(check);
                    content.revalidate();
                }
                else if(splited[t].equals( legal[u])){

                    content.removeAll();
                    list.add(txt.getText());
                    content.add(msg);
                    content.revalidate();

                }
            }
        }
    }

共 (2) 个答案

  1. # 1 楼答案

    让我们暂时把UI从等式中去掉

    测试一个^ {< CD1>}是否为空,您有许多选项,基于您认为空^ ^ {CD1>}的选项,例如…

    if (text == null || text.trim().isEmpty()) {...}
    

    当删除前导空格和尾随空格时,将捕获String值为null或长度为0的情况

    要检查String是否包含有效的字符集,使用API提供的正则表达式功能会简单得多,例如

    if (text.matches("[a-z\\-_]+")) {
        System.out.println("Matches");
    }
    

    将匹配az之间的所有字符以及_-字符。这意味着String必须是小写;)

  2. # 2 楼答案

    代码中的问题如下:

    if(splited[t] != legal[u]){
    

    不能使用==!=来比较字符串。相反,您必须检查:

    if(!splited[t].equals(legal[u])){
    

    此外,您的逻辑可以简化为一种情况和另一种情况:

    if(splited[t].equals(legal[u])){
        // it is legal
    } else {
        // it is not legal 
    }
    

    也就是说,有更简单的方法可以做到这一点。例如,您可以通过使用^{}直接访问字符,而无需使用split("")。还可以使用^{}直接将String转换为char[]

    然而,你对String的使用普遍过度(例如,你的String[]可能真的是char[]

    您也可以非常轻松地使用正则表达式,而不需要所有这些String数组和拆分,请参见^{},例如:

    if (txt.matches("[a-zA-Z_-]+")) { 
        // string is legal
    } else {
        // string is not legal
    }