Java 搜索方法似乎不错,但不是我的if语句来初始化它
我能得到一些帮助吗?我不知道如何让我的If语句搜索一个学生来工作。我得到一个错误:Java 搜索方法似乎不错,但不是我的if语句来初始化它,java,arrays,sorting,search,Java,Arrays,Sorting,Search,我能得到一些帮助吗?我不知道如何让我的If语句搜索一个学生来工作。我得到一个错误: incompatible types found : Student required: boolean if (search(name, students)) 另外,我不知道如何实现冒泡排序 public class StudentProcessor2 { public static void main(String[] args) { Scanner input = new
incompatible types
found : Student
required: boolean
if (search(name, students))
另外,我不知道如何实现冒泡排序
public class StudentProcessor2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// read in how many students to process
System.out.print("How many students?");
int numStudents = input.nextInt();
Student[] students = new Student[numStudents];
for (int i = 0; i < numStudents; i++) {
// read in student data from Scanner
System.out.println("What is the students name?");
String name = input.next();
System.out.println("What is the students grade?");
// System.out.println("***Type -1 if no more grades***");
int grade = input.nextInt();
Student student = new Student();
student.setName(name);
student.setGrade(grade);
students[i] = student;
}
UserSelection(input, numStudents, students);
}
// show menu with options
public static void UserSelection(Scanner input, int numStudents,
Student[] students) {
// Repeatedly process menu selections by the user.
int choice;
do {
System.out.println();
System.out.println("*** Student Exam Results Menu ***");
System.out.println("(1) Display the results");
System.out.println("(2) Display the average result");
System.out.println("(3) Display the highest grade");
System.out.println("(4) Display the lowest grade");
System.out.println("(5) Search for specific result");
System.out.println("(6) Search for student grade by name");
System.out.println("(7) Sort the results in ascending order");
System.out.println("(8) quit");
choice = input.nextInt();
if (choice == 1)
{
System.out.println(Arrays.toString(students));
} else if (choice == 2)
{
double average = getAverage(students);
System.out.println("average grade = " + average);
} else if (choice == 3)
{
int high = getHighest(students);
System.out.println("high grade = " + high);
} else if (choice == 4)
{
int low = getLowest(students);
System.out.println("low grade = " + low);
} else if (choice == 5)
{
System.out.print("Result to look for: ");
int grade = input.nextInt();
if (result(grade, students)) {
System.out.println(grade +
" is in the collection of grades.");
} else
{
System.out.println(grade +
" is not in the collection of grades.");
}
} else if (choice == 6)
{
System.out.print("Student to search for: ");
String name = input.nextLine();
if (search(name, students))
{
System.out.println(name +
" is in the list of Students.");
} else
{
System.out.println(name +
" is not in the list of Students");
}
}
} while (choice != 8);
}
// get Lower Grade
private static int getLowest(Student[] students) {
int lowest = 100;
Student result = null;
for (Student student : students) {
if (student.getGrade() < lowest) {
lowest = student.getGrade();
result = student;
}
}
return result.getGrade();
}
// get Highest grade
private static int getHighest(Student[] students) {
int highest = 0;
Student result = null;
for (Student student : students) {
if (student.getGrade() > highest) {
highest = student.getGrade();
result = student;
}
}
return result.getGrade();
}
// get Average grade
private static double getAverage(Student[] students) {
int total = 0;
for (Student student : students) {
total += student.getGrade();
}
return total / students.length;
}
// Search for student
private static Student search(String name, Student[] students) {
Student result = null;
for (Student student : students) {
if (student.getName().equalsIgnoreCase(name)) {
result = student;
break;
}
}
return result;
}
// Search for grade
private static boolean result(int grade, Student[] students) {
for (Student student : students) {
if (student.getGrade() == grade) {
return true;
}
}
return false;
}
// !Bubble sort goes here!
private void sort(Student[] students) {
Student hold; // temporary holding area for swap
for (int i = 0; i < students.length; i++) { // passes
Student current = students[i];
Student next = students[i + 1];
if (current.getGrade() > next.getGrade()) // one comparison
{
hold = students[i]; // one swap
students[i] = students[i + 1];
students[i + 1] = hold;
}
}
}
}
公共类学生处理器2{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//阅读要处理的学生人数
系统输出打印(“有多少学生?”);
int numStudents=input.nextInt();
学生[]学生=新学生[numStudents];
对于(int i=0;i最高){
最高=student.getGrade();
结果=学生;
}
}
返回result.getGrade();
}
//得平均分
私人静态双平均(学生[]学生){
int-total=0;
用于(学生:学生){
总计+=student.getGrade();
}
返回总长度/students.length;
}
//寻找学生
私有静态学生搜索(字符串名称,学生[]学生){
学生成绩=空;
用于(学生:学生){
if(student.getName().equalsIgnoreCase(name)){
结果=学生;
打破
}
}
返回结果;
}
//搜索等级
私有静态布尔结果(整数级,学生[]学生){
用于(学生:学生){
if(student.getGrade()==成绩){
返回true;
}
}
返回false;
}
//!泡泡排序在这里!
私有无效排序(学生[]学生){
学生等待;//交换的临时等待区
对于(int i=0;inext.getGrade())//一次比较
{
hold=学生[i];//一次交换
学生[i]=学生[i+1];
学生[i+1]=持有;
}
}
}
}
您的搜索
方法返回一个学生
对象
,以便检查返回的实例if
语句表达式必须是boolean
表达式,因此会出现错误。
if (search(name, students))
if (search(name, students) == null)