我在一个方法和一些需要其他方法使用的变量中创建了我的数组。我不确定你是否可以返回多个值。如果有人能指出我正确的方向,那么我可以完成这一点,你将非常感谢帮助。我遇到问题的部分包含在**
中import java.util.Scanner;
public class Project1{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Project1 project1 = new Project1();
project1.mainMenu();
}//main
public void enterStudents(){
Scanner input = new Scanner(System.in);
System.out.println("Enter number of students");
int numOfStudents = input.nextInt();
Student[] students = new Student[numOfStudents];
int i;
for(i = 0; i <= numOfStudents - 1; i++){
System.out.println("Enter student's ID: ");
int id = input.nextInt();
System.out.println("Enter student's first name: ");
String first = input.next();
System.out.println("Enter student's last name: ");
String last = input.next();
System.out.println("Enter student's class: ");
String stuClass = input.next();
Student x = new Student(id,first,last,stuClass);
students[i] = x;
}
}
**public void retrieveStuId(){
Scanner input = new Scanner(System.in);
System.out.println("Enter student id");
int searchID = input.nextInt();
int i;
for(i = 0; i <= numOfStudents - 1; i++){
int search = students[i].getId;
if (studentID = searchID)
System.out.println(students[i].toString());
}**
答案 0 :(得分:2)
在Java中,方法可以返回Object,原语或数组。如果需要返回多个值,通常使用数组或一些List。
例如(数组):
int[] getManyValues() {
int resultCount = getResultCount();
int[] result = new int[resultCount];
for (int i=0;i<resultCount;i++) {
result[i] = getNextResult();
}
return result;
}
或使用List:
List<Integer> getManyValues() {
List<Integer> result = new ArrayList<Integer>();
while (hasMoreResults()) {
result.add(getNextResult());
}
return result;
}
答案 1 :(得分:2)
声明
学生[]学生;
Project1类的成员变量
public class Project1 {
Student[] students ;
...
然后
public void retrieveStuId(){
Scanner input = new Scanner(System.in);
System.out.println("Enter student id");
int searchID = input.nextInt();
for (int j = 0; j < students.length; j++) {
Student student = students[j];
int search = student.getId();
if (search == searchID)
System.out.println(student.toString());
}
}
将其添加到主菜单
public void mainMenu() {
Scanner input = new Scanner(System.in);
System.out.println("1 - Enter student info");
System.out.println("2 - Retrieve student by ID");
System.out.println("3 - Retrieve student by last name");
System.out.println("4 - Update student");
System.out.println("5 - Exit");
int menuSelect = input.nextInt();
switch (menuSelect) {
case 1:
enterStudents();
break;
case 2:
System.out.print("case 2");
retrieveStuId();
break;
case 3:
System.out.print("case 3");
break;
case 4:
System.out.print("case 4");
break;
default:
System.out.println("That is not a option");
}
mainMenu();
}
保持同样的执行......
答案 2 :(得分:1)
您只能返回一个值。但是这个值可以是一个数组/列表等。所以你可以从方法中返回学生并使用它没有任何问题。
答案 3 :(得分:1)
你不能在Java中返回多个值,但是你有几个选择。
要“返回”相同类型的多个值:
ArrayList
对于不同类型的多个值:
Student
对象,其中包含/包含多个实例变量,例如firstName
和lastName
,这些变量可能是您想要修改并返回的。或者例如可能包含两个坐标的Point
类。int
或double
,则可以使用包装类Integer
和Double
。但是,您还没有真正告诉我们您正在尝试/想要做什么,使该代码段基本没有意义。
答案 4 :(得分:1)
您只能返回一个值,但该值可以是对象的引用,而该对象又引用其他对象。因此可以返回数组,列表等。
但是,您的方法 retrieveStuId 看起来应该找到一个学生(具有匹配的ID),因此该方法返回一个学生可能是合乎逻辑的。然后该方法需要返回找到的学生(或null或任何其他“未找到”指示符。有些东西
public Student retrieveStuId() {
int searchId = askForStudentId();
for (Student student: students) {
if (student.getId == searchId) {
return student;
}
}
// No student found
return null;
}
答案 5 :(得分:0)
无法返回多个值。但是您可以轻松地创建一个包装类,它可以获取所有值,并返回该值。
答案 6 :(得分:0)
您可以使用不同的数据结构(如Array,ArrayList,Vector)作为返回类型的方法,并将多个值放入其中。
答案 7 :(得分:0)
数据传输对象(DTO)或值对象(VO)的概念可用于从方法调用返回多种数据类型。将您的DTO / VO构造为POJO,其字段对应于您要返回的不同数据类型;然后在您的方法中填充DTO实例,并返回该DTO。
请注意,DTO只是一个奇特的术语 - 任何能够同时保存对多种数据类型的引用的数据结构都应该有效。