簡體   English   中英

無法在原始類型 int 上調用 contains(int)

[英]Cannot invoke contains(int) on the primitive type 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;
        }
    }

nationalIdNumberint類型,它沒有任何方法。 你想做什么? 也許那行應該讀

if (v.nationalIdNumber == s) {

? 我不知道。 給我們更多的背景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM