gpt4 book ai didi

java - 如何将我的返回方法与这段代码结合起来? (Java、Eclipse)

转载 作者:行者123 更新时间:2023-12-01 17:01:55 25 4
gpt4 key购买 nike

我如何从这段代码中获取返回值?它不允许我在 FOR 循环中使用返回函数,而且我不知道如何继续。

它应该返回一个存储在数组列表 al 中的对象(在我的 main 方法中声明),但我无法获取正确返回 Student 对象的方法。

有什么建议吗?

public static Student getStudentByNumber(int number1, ArrayList<Student> al)
{
for(Iterator<Student> it = al.iterator(); it.hasNext();)
{
if(number1 == it.next().getStudentNumber())
{

return it.next();
}
else
{
return null;
}

}


}

最佳答案

问题不在于for内部的return,而在于for外部没有return 。想想如果 al.isEmpty() 会发生什么。想想你实际循环的频率。重新考虑return null的放置位置。

考虑一下,第二次调用 it.next() 可能不是有意的 - 您真的返回了正确的元素吗?如果是最后一个匹配的学生怎么办?

注意名字。最好根据变量的含义来命名变量,而不是根据变量的本质来命名。并且保持一致。

ArrayList/Collection 包含 Students,这就是它的命名方式:students

如果学生除了studentNumber之外还可以有另一个号码,即SSN,那么每当我们提到它时,我们都应该更准确地描述号码。在这种情况下,getStudentByNumber 应重命名为 getStudentByStudentNumbernumber 应重命名为 studentNumber。如果 studentNumberStudent 拥有的唯一编号,则应将其重命名为 number,因为在这种情况下 Student.studentNumber 将是多余的,即 Student.getStudentNumber() 应重命名为 Student.getNumber()

类型应始终根据要求具体,但不能更具体。换句话说:类型应尽可能通用。如果您的方法采用 ArrayList,它仅适用于ArrayList。如果您的方法采用 List,则它采用所有类型的列表,例如 ArrayList 以及 LinkedList。如果您的方法采用Collection,它可以处理更多类型。并且没有理由说它只能与 ArrayList 一起使用。所以类型实际上应该是Collection

但无论如何,Java 比这简单得多。您可以让 Java 为您完成工作,而不是显式地使用Iterator

public static Student getStudentByNumber(int number, Collection<Student> students) {
for (Student student : students) {
if (student.getStudentNumber() == number) {
return student;
}
}
return null;
}

我会考虑交换参数的顺序。更符合逻辑/惯例的是,首先指定搜索位置,然后指定搜索内容,如下所示:

public static Student getStudentByNumber(Collection<Student> students, int number) {
for (Student student : students) {
if (student.getStudentNumber() == number) {
return student;
}
}
return null;
}

使用 Java 中的函数式编程,它会变得更加简单:

public static Student getStudentByNumber(Collection<Student> students, int number) {
return students.stream()
.filter(student -> student.getStudentNumber() == number)
.findFirst()
.orElse(null);
}

关于java - 如何将我的返回方法与这段代码结合起来? (Java、Eclipse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136812/

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