Java 确定两个参与者不工作的equals()方法

Java 确定两个参与者不工作的equals()方法,java,equals,Java,Equals,我做错了什么 问题是我将如何包括一个equals()方法,该方法确定两个参与者在所有三个字段中的值相同时是否相等? 包括为每个字段分配参数值的构造函数和返回包含所有值的字符串的toString()方法 import javax.swing.JOptionPane; import java.util.*; public class Abc { private static Ab mini[] = new Ab[2]; private static Ab diving[] = n

我做错了什么

问题是我将如何包括一个
equals()
方法,该方法确定两个
参与者
在所有三个字段中的值相同时是否相等? 包括为每个字段分配参数值的构造函数和返回包含所有值的字符串的
toString()
方法

import javax.swing.JOptionPane;
import java.util.*;

public class Abc {

    private static Ab mini[] = new Ab[2];
    private static Ab diving[] = new Ab[2];

    public static void main(String[] args) {

        String name = "";
        String add = "";
        int age = 0;

        Ab p = new Ab(name, age, add);
        Ab p1 = new Ab(name, age, add);

        setParticipant();
        setParticipant1();

        displayDetail();
        displayDetail1();

        if (p == p1) {

            System.out.println("equal");
        } else {
            System.out.println("not equal");

        }

    }

    public static void setParticipant() {
        for (int x = 0; x < mini.length; x++) {
            System.out.println("Enter detail about participant1 " + (x + 1) + "...");

            String name = getName();
            String add = getAdd();
            int age = getAge();

            System.out.println();
            mini[x] = new Ab(name, age, add);
            //Create the object with the data you collected and put it into your array.

        }
    }

    public static void setParticipant1() {
        for (int y = 0; y < diving.length; y++) {
            System.out.println("Enter Participant2 " + (y + 1) + "...");

            String name = getName();
            String add = getAdd();
            int age = getAge();
            System.out.println();
            //mini[x] = new Ab(name, age, add);
            //Create the object with the data you collected and put it into your array.
            diving[y] = new Ab(name, age, add);
        }
    }

    public static void displayDetail() {
        // for (int y = 0; y < diving.length; y++) {
        System.out.println("Name \tAge \tAddress");

        for (int x = 0; x < mini.length; x++) {
            System.out.println(mini[x].toString());
            // System.out.println(diving[y].toString());
        }
    }

    public static void displayDetail1() {
        System.out.println("Name \tAge \tAddress");

        for (int y = 0; y < diving.length; y++) {
            System.out.println(diving[y].toString());
        }
    }

    public static String getName() {
        Scanner sc = new Scanner(System.in);
        String name;

        System.out.print(" Participant name: ");
        return name = sc.next();
    }

    // System.out.print(" Participant name: ");
    // name = sc.next();
    public static int getAge() {
        int age;
        System.out.print(" Enter age ");
        Scanner sc = new Scanner(System.in);
        return age = sc.nextInt();
    }

    public static String getAdd() {
        String add;
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter Address: ");
        return add = sc.next();
    }
}

equals
应该覆盖
对象的
equals
方法,这意味着它应该接受
对象
作为参数

改变

public boolean equals(Participant value)
p==p1

哦,如果不使用它,那么覆盖
equals
也无济于事

改变

public boolean equals(Participant value)
p==p1


尝试value.name.equals(name)和value.address.equals(address),因为现在您正在比较您提供的代码中的相同内容,我在任何地方都没有看到参与者类,这意味着
公共布尔值等于(参与者值)
一开始就不起作用。我建议您的equals方法看起来更像这样:

public boolean equals(Ab value) {
    if (this.name.equals(value.name) && this.age == value.age && this.address.equals(value.address)){
        return true;
    }
    else{
        return false;
    }
}
我还对你的Abc课程做了一些修改供你考虑。在我看来,它似乎比原始代码更干净、更流畅,但这也是您的选择:)

import javax.swing.JOptionPane;
导入java.util.*;
公共课Abc{
私有静态Ab mini[]=新Ab[2];
专用静态Ab潜水[]=新Ab[2];
公共静态void main(字符串[]args){
字符串名称=”;
字符串add=“”;
int年龄=0;
Ab p=新Ab(姓名、年龄、添加);
Ab p1=新Ab(姓名、年龄、添加);

for(int x=0;xyor
Ab
类不重写
.equals()
;您希望得到什么?如果数组中的值等于其他数组输出,则始终应将参与者1==显示给参与者2,请始终使用
@Override
…并相应地修改代码:p尤其是因为作为参数的对象可以是
null
…@fge是的,我将此作为OP的练习:)
public boolean equals(Ab value) {
    if (this.name.equals(value.name) && this.age == value.age && this.address.equals(value.address)){
        return true;
    }
    else{
        return false;
    }
}
import javax.swing.JOptionPane;
import java.util.*;

public class Abc {
    private static Ab mini[] = new Ab[2];
    private static Ab diving[] = new Ab[2];

    public static void main(String[] args) {

        String name = "";
        String add = "";
        int age = 0;
        Ab p = new Ab(name, age, add);
        Ab p1 = new Ab(name, age, add);
        for(int x=0; x<mini.length; x++){
            System.out.println("Enter detail about participant " + (x + 1) + "...");
            setParticipant(mini[x]);
        }

        for (int y = 0; y < diving.length; y++) {
            System.out.println("Enter detail about participant " + (y + 1) + "...");
            setParticipant(diving[y]);
        }

        displayDetail(mini);
        displayDetail(diving);

        if (p.equals(p1)) {

            System.out.println("equal");
        } else {
            System.out.println("not equal");

        }

    }
    public static void setParticipant(Ab part) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Name: ");
        String name = sc.next();
        System.out.print("Age: ");
        int age = sc.nextInt();
        System.out.print("Address: ");
        String add = sc.next();
        System.out.println();
        part = new Ab(name, age, add); //<--- Create the object with the data you collected and put it into your array.
        sc.close();
    }

    public static void displayDetail(Ab[] parts) {

        System.out.println("Name \tAge \tAddress");

        for (int x = 0; x < parts.length; x++) {
            System.out.println(parts[x].toString());
        }

    }

}