有 Java 编程相关的问题?

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

Java是一种不重复NIF的方法

我有这个方法

public static boolean DNIRepetido(String dni1){
        boolean aux=false;

        for (Cliente cliente : cli) {
            if(dni1==cliente.dni){
                aux=true;
            }else{
                aux=false;
                break;
            }
        }
        return aux;
    }

但当我实施它时,它并不好用

do{
    System.out.print("DNI: ");
    c.dni=sc.next();
}while((ValidarDNI(c.dni)==false)&&(DNIRepetido(c.dni)==false));

(“ValidarDNI”很好用)


共 (2) 个答案

  1. # 1 楼答案

    必须使用equals方法比较字符串的相等性(相同内容)。这是一个frequent mistake

    此外,我还要检查DNIRepetido退出条件。我猜当你发现重复的DNI时,你想退出。在您的情况下,如果发现重复的DNI(并因此设置^{),for循环的下一次迭代将改变这一事实:

    public static boolean DNIRepetido(String dni1){
            for (Cliente cliente : cli) {
                if(dni1.equals(cliente.dni)){
                    return true;
                }
            }
            return false
        }
    
  2. # 2 楼答案

    除了用于比较字符串的equals()方法之外,还要在代码中添加另一个问题

    当您进入循环时,第一次找到具有不同DNI的客户机时,您将退出循环,并且不会检查其他客户机DNI。你应该避免代码中的else部分:

    public static boolean DNIRepetido(String dni1){
            boolean aux=false;
    
            for (Cliente cliente : cli) {
                if(dni1.equals(cliente.dni)){
                    aux=true;
                }
            }
            return aux;
        }