在我的主要课程中,如何为compare
方法提供参数?因为要求对象输入。
它显示了一个错误:
方法compare(String,String)未定义类型ASSIGNRES;
package com.jspiders.Collection;
public class SStudent
{
int id;
String name;
int marks;
SStudent(int id,String name,int marks)
{
this.id=id;
this.name=name;
this.marks=marks;
}
}
package com.jspiders.Collection;
import java.util.Comparator;
public class Id implements Comparator
{
public int compare(Object o1,Object o2)
{
Student s1=(Student)o1;
Student s2=(Student)o2;
if(s1.id==s2.id)
return 0;
else if(s1.id>s2.id)
return 1;
else
return -1;
}
}
package com.jspiders.Collection;
import java.util.Comparator;
public class Name implements Comparator
{
public int compare(Object o3,Object o4)
{
Student s3=(Student)o3;
Student s4=(Student)o4;
return s3.name.compareTo(s4.name);
}
}
package com.jspiders.Collection;
public class Marks
{
public int compare(Object o5,Object o6)
{
Student s5=(Student)o5;
Student s6=(Student)o6;
if(s5.marks==s6.marks)
return 0;
else if(s5.marks>s6.marks)
return 1;
else
return -1;
}
}
package com.jspiders.Collection;
import java.util.Scanner;
public class ASSIGNRES
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
/*While(true)
{
System.out.println("create id");
System.out.println("create name");
System.out.println("create marks");
System.out.println("enter the choice");*/
int choice=sc.nextInt();
switch(choice)
{
case 1:System.out.println("enter the id no");
int idd=sc.nextInt();
int idd1=sc.nextInt();
Object ans=(int)idd;
Object ans1=(int)idd1;
compare( ans, ans1);
break;
case 2:System.out.println("enter the name");
String name1=sc.next();
String name2=sc.next();
compare(name1,name2);
break;
case 3:System.out.println("enter the marks");
int marks1=sc.nextInt();
int marks2=sc.nextInt();
compare(marks1,marks2);
break;
}
}
}
答案 0 :(得分:1)
您正在定义Comparator
子类,但实际上并未使用它们。
String name1=sc.next();
String name2=sc.next();
compare(name1,name2);
我认为您的意思是在compare
中调用Name
方法,如下所示:
Name nameComparator = new Name();
Student student1 = new Student(0, sc.next(), 0);
Student student2 = new Student(0, sc.next(), 0);
nameComparator.compare(student1,student2);
根据name
字段的值,这将返回哪个学生更大。
您已Comparator
个子类占用Student
个实例,并根据特定字段对它们进行比较。您无法直接使用字段值调用它们,您必须创建Student
的实例进行比较。
答案 1 :(得分:0)
在compare()
类的main
方法中使用方法ASSIGNRES
时,编译器会在ASSIGNRES
类中查找该方法(它在那里找不到它,因此错误)。
查看您的代码,我猜测您想要的是:
Student
的数据(例如int ans
,String name
和int mark
)。Student
个对象Student
方法Student::compare
个对象
醇>