java - 无法在原始类型 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;
}
}
解决方案
nationalIdNumber
is of typeint
它没有任何方法。你想做什么?也许那行应该读
if (v.nationalIdNumber == s) {
? 我不知道。给我们更多的背景。
推荐阅读
- c# - linq: from object in an object to just an object
- javascript - 如何使用 Chart.js 创建这样的条形图?
- c# - 更新 CollectionView
- javascript - 如何使用 rxjs 从 json 对象中过滤属性?
- python-3.x - 如何转换
“二进制字符串”到 b“二进制字符串”? - c# - 检查列表是否包含特定集合的任何元素的最佳方法是什么?
- cmake - CMAKE_C_COMPILER_ID 如何在 libevent CMakeLists.txt 中获取值?
- php - 在 Laravel 中计算时差
- javascript - 将纯文本鼠标选择包装到 html 标记中
- java - solr DIH:RegExTransformer