所以这是我的问题,我试图在数组中搜索一个值,然后返回索引以及字符串名称。
但我的问题是,当我返回索引时,它将其设置为字符串,因为这就是方法调用的内容,因此当我尝试键入强制转换索引以更改为字符串时,我的编译器会抛出错误。以下是一些方法的麻烦,如果你们想看到它,我可以发布我的整个代码。
public static String studentGrade(Scanner stdIn)
{
System.out.print("What student do you want to enter a grade for?");
String searchName=stdIn.next();
String index = findStudent(students, searchName);
int studentId =(int) currentStudentId(students, searchName);
if (index == searchName)
{
System.out.println("Student was found, " + index + studentId);
System.out.println("What is the grade that you want to input for this student?");
String input = stdIn.next();
String studentGrade = input;
return studentGrade;
}
else
{
System.out.println("not found");
}
}
public static String findStudent(String[] students, String searchName)
{
for (int i = 0; i < students.length; i++)
{
if (students[i].equals(searchName))
{
String currentStudentId = i;
return currentStudentId;
return searchName;
}
} // end for
String fail = "fail";
return fail;
} // end findStudent
答案 0 :(得分:2)
我不相信将String和index作为int返回是一个好主意。为什么不通过查找包含所有学生的数组来返回索引并获取学生。 如果找不到学生,您可以返回例如-1。
这就是我的意思:
String[] students = new String[] { ... };
//...
int indexFound = findStudent(students, "John Doe");
if (indexFound >= 0) {
String studentFound = students[indexFound];
}
PS。您的代码包含错误(例如加倍返回命令)
答案 1 :(得分:1)
为什么要将searchName
从findStudent()
返回到通过参数传递的方法。
当然,调用者方法已经具有该值。只需返回索引:
public static int findStudent(String[] students, String searchName)
{
for (int i = 0; i < students.length; i++)
{
if (students[i].equals(searchName))
{
return i;
}
} // end for
int fail = -1;
return fail;
} // end findStudent
答案 2 :(得分:0)
索引自然是int,而不是String。你应该返回一个int。
假设这是作业,你必须返回一个字符串,你可以使用以下代码将数字转换为字符串。
return ""+currentStudentId;
但是,您遇到的问题是您尝试返回两个值。
我怀疑你误解了这些要求,我建议你再读一遍。
一个较短的例子,使用varargs
public static int findString(String string, String... strings) {
for (int i = 0; i < strings.length; i++)
if (strings[i].equals(string))
return i;
return -1; // for not found.
}
甚至以下适用于任何类型。
public static <T> int indexOf(T t, T... ts) {
for (int i = 0; i < ts.length; i++)
if (ts[i].equals(t))
return i;
return -1; // for not found.
}
e.g。
int found = indexOf(5, 1,3,5,7); // found = 2;