gpt4 book ai didi

java - 如何使用setter为私有(private)数组的属性设置值?

转载 作者:行者123 更新时间:2023-12-01 20:15:03 39 4
gpt4 key购买 nike

我已经制作了一个卷号数组,那么如何使用 setter 为私有(private)属性(即卷号)提供用户输入。我做了一个学生类的对象,并尝试了这个 students.for(int i=0;i<n;i++)
{(setRollno[i](sc.next()))};
但没有成功。

class Students{
private String[] rollno = new String[1000];
private int[] intel = new int[1000];
private int[] type = new int[1000];
private String[] name = new String[1000];

public void setRollno(String[] rollno) {
this.rollno = rollno;
}

public void setName(String[] name) {
this.name = name;
}

public void setIntel(int[] intel) {
this.intel = intel;
}

public void setType(int[] type) {
this.type = type;
}


public String[] getRollno() {
return rollno;
}

public String[] getName() {
return name;
}

public int[] getIntel() {
return intel;
}

public int[] getType() {
return type;
}
}

最佳答案

可能我误解了您的数据结构的目的,但听起来您正在尝试在一个地方创建一组学生数据。如果是这种情况,那么我强烈建议创建一个 Student 类,该类一次仅代表一名学生,然后使用 Java 集合框架中的一个或多个标准类型来轻松查找特定学生。

例如,您的 Student 类可以只包含保存一名学生的卷号、姓名和其他数据的字段。然后,假设您希望通过卷号快速找到学生,您可以创建一个 Map<String, Student>,其中映射键是卷号,相应的映射值是具有该卷号的学生。只需在构造完后将一个新的 Student 对象放入 Map 中即可。如果您需要按姓名查找学生,那么您可以创建一个 Map<String, Collection<Student>> (因为可能有多个学生具有相同的姓名),并在构造后将每个新的 Student 对象放入此名称映射中。

这可能会导致代码比一体化的自定义集合类(例如您的问题中所示的集合类)更容易阅读、维护和使用。

作为一个粗略的代码示例:

String rollNumber = getNewRollNumber(); // wherever roll numbers come from
String name = getStudentName(); // wherever the name comes from
Student newStudent = new Student(rollNumber, name, etc);
studentsByRollNumber.put(rollNumber, newStudent);
studentsByName.computeIfAbsent(name,
n -> new ArrayList<>(1)).add(student);

Student studentWithParticularRollNumber =
studentsByRollNumber.get("123456");
Collection<Student> studentsWithParticularName =
studentsByName.get("Perry, Fred");

仅当该名称下不存在任何条目时,Map#computeIfAbsent 方法才会在给定学生名称下创建一个新的 ArrayList,或者如果该名称已存在于 map 中,则将获取现有列表,然后将新学生放入列表。

在对 computeIfAbsent 的调用中,lambda 表达式 t -> new ArrayList<>(1) 只是表示“获取映射键的值,无论它是什么,都只是创建一个大小为 1 的新 ArrayList”。它只是保证如果给定学生姓名下还没有存储 Collection<Student>,那么将创建一个新的 ArrayList<Student> 并将其存储在那里。

关于java - 如何使用setter为私有(private)数组的属性设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000612/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com