首页 > 解决方案 > 无法在原始类型 int 上调用 contains(int)

问题描述

我遇到了案例 4 的问题。我正在尝试使用 ID 查找选民。它是公开的,它说Cannot invoke contains(int) on the primitive type int。这是为什么?Id 实际上是公开的,但我不知道问题所在。

我要做的就是找到选民的身份。

public class Voters {

    public static HashSet<Voter> voters = new HashSet<>();

    public static void main(String[] args) throws IOException {

        while (true) {
            System.out.println("1. Add New Voter");
            System.out.println("2. List All Voters");
            System.out.println("3. Find a Voter By Name");
            System.out.println("4. Get information about specific voter");
            System.out.println("5. Exit");
            Scanner scanner = new Scanner(System.in);

            int chosen = scanner.nextInt();

            switch (chosen) {
            case 1:
                System.out.print("National ID Number: ");
                int idNum = scanner.nextInt();
                System.out.print("\nName: ");
                String name = scanner.next();
                System.out.print("\nMale Relative: ");
                String maleRelative = scanner.next();
                System.out.print("\nAge: ");
                int age = scanner.nextInt();
                System.out.print("\nAddress: ");
                String address = scanner.next();
                System.out.print("\nProvince: ");
                String province = scanner.next();
                System.out.println("");
                Voter voter = new Voter(idNum, name, maleRelative, age, address, province);
                voters.add(voter);
                FileWriter fileWriter = new FileWriter("C:\\Users\\YourPcName\\Desktop\\voters.txt");
                fileWriter.append("\n").append(voter.toString());
                fileWriter.flush();
                fileWriter.close();
                break;
            case 2:
                for (Voter v : voters) {
                    System.out.println(v);
                }
                break;
            case 3:
                System.out.print("Name: ");
                Scanner ss = new Scanner(System.in);
                String n = ss.nextLine();
                System.out.println();
                for (Voter v : voters) {
                    if (v.name.contains(n)) {
                        System.out.println(v);
                        break;
                    }
                }
                break;
            case 4:
                System.out.print("Id: ");
                Scanner nn = new Scanner(System.in);
                int s = nn.nextInt();
                System.out.println();
                for (Voter v : voters) {
                    if (v.nationalIdNumber.contains(s)) {
                        System.out.println(v);
                        break;
                    }
                }
                break;
            case 5:
                System.exit(0);
                break;
            default:
            }

        }
    }

    static class Voter {
        public int nationalIdNumber;
        public String name;
        public String maleRelativeName;
        public int age;
        public String address;
        public String province;

        public Voter(int nationalIdNumber, String name, String maleRelativeName, int age, String address,
            String province) {
            this.nationalIdNumber = nationalIdNumber;
            this.name = name;
            this.maleRelativeName = maleRelativeName;
            this.age = age;
            this.address = address;
            this.province = province;
        }

        public String toString() {
            return "Id: " + nationalIdNumber + "  Name: " + name + "  Male Relative: " + maleRelativeName + "  Age: "
                    + age + "  Address: " + address + "  Province: " + province;
        }
    }

标签: java

解决方案


nationalIdNumberis of typeint它没有任何方法。你想做什么?也许那行应该读

if (v.nationalIdNumber == s) {

? 我不知道。给我们更多的背景。


推荐阅读