你的错误提示中提到了两个问题。
首先,不能对非静态方法进行静态引用。这是因为当一个方法被声明为静态时,它属于类而不是对象实例。而非静态方法是属于对象实例的,只有创建了对象实例后才能调用。所以,如果你想在静态方法中调用非静态方法,你需要先创建一个对象实例。
其次,方法f(Student, String)对于参数(Student, int)不适用。这是因为你所调用的方法f需要两个参数,一个是Student类型的对象,另一个是String类型的参数。然而,在你对f方法进行调用时,传递的第二个参数是一个整数类型(int)。这导致了方法签名的不匹配错误。
关于键盘输入和查找数组中的信息,你可以使用Java中的Scanner类来实现输入,然后使用遍历数组的方式查找特定的信息。下面是一个示例代码,演示了如何实现键盘输入和查找数组中的信息:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 创建一个包含学生信息的数组
Student[] students = {
new Student("Tom", 18),
new Student("Jerry", 20),
new Student("Alice", 19)
};
System.out.print("请输入要查找的学生姓名:");
String name = scanner.nextLine();
// 遍历数组,查找匹配的学生信息
boolean found = false;
for (int i = 0; i < students.length; i++) {
if (name.equals(students[i].getName())) {
System.out.println("找到了!该学生的年龄是:" + students[i].getAge());
found = true;
break;
}
}
if (!found) {
System.out.println("没有找到匹配的学生信息。");
}
scanner.close();
}
}
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
在上面的示例代码中,我们使用Scanner类来获取键盘输入的学生姓名。然后,我们使用for循环遍历学生数组,查找与输入的姓名匹配的学生信息。如果找到了匹配的学生信息,则输出该学生的年龄;如果没有找到匹配的学生信息,则输出相应的提示消息。
希望这能帮到你!如果你有任何其他问题,请随时问我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |