我正在尝试编写一个有方法考试标记的程序 这包含瞳孔类的对象和给出瞳孔名称的字符串。该方法应返回学生考试标记及其名称。如果有一个叫乔的学生,他们的考试成绩是32,那么当乔通过时,应该打印出32。
在学生班上我有getter,对于getexamscore和子类我有getter getpupilname。 向量元素应该在学生班。
如果瞳孔不在班级中,则应返回-1。
这是我的方法,一切都必须只有这个方法:
import java.util.*;
public class vectors
{
public int lookforMark(Vector <pupil> v, String name)
{
int examscoremark=0;
name="";
try{
for(int i=0; i<=v.size(); i++){
try
{
int element= v.elementAt(i).getexamscore();
String element2= v.elementAt(i).getpupilname();
}
catch(Exception e)
{
System.out.println("there is an error");
return -1;
}
}
}
有人可以帮我回复带有学生姓名的考试吗?
答案 0 :(得分:2)
您可以在瞳孔上创建setMark
方法。
或者,创建一个对象来保存名称并标记并返回它。
public class ExamMark {
private final String name;
private final int mark;
public ExamMark(String name, int mark){
this.name = name;
this.mark = mark;
}
public String getName(){
return name;
}
public int getMark(){
return mark;
}
}
像这样使用:
return new ExamMark(v.elementAt(i).getpupilname(), v.elementAt(i).getexamscore());
答案 1 :(得分:1)
这个问题有两个答案:
Pair<E,K>
课程。有几个可通过谷歌。这是捷径。答案 2 :(得分:1)
你明确地说过
在学生班上,我有吸气剂,getexamscore和a 子类我有getter getpupilname。矢量元素应该是 在学生班。
因此,您不需要任何额外的包装类。而不是返回一个int,返回像这样的
的学生对象public pupil lookforMark(Vector <pupil> v, String name) {
for(int i = 0; i < v.size(); i++)
if(v.elementAt(i).getpupilname().equals(name))
return v.elementAt(i);
return null;
}
很容易。现在,学生掌握了名字和成绩。
稍后编辑:纠正for循环中的错误。
答案 3 :(得分:0)
最好使用List或Map,vector会降低性能吗?
创建具有user和pupil对象的类结果,并使用key初始化hashmap作为用户,value将是result对象。
映射userMap = new HashMap();
public Result getUserMarks(String user){
Result result = userMap.get(user);
return result;
}
答案 4 :(得分:0)
一次返回两个对象的最佳方法是将这两个对象包装在标准java对象中,该对象可以包含两个值。这将是Map.Entry<T1, T2>
类型的对象。要创建此类对象,您可以使用:
new AbstractMap.SimpleEntry<T1, T2>(value1, value2);
所以在您的情况下new AbstractMap.SimpleEntry<Integer, String>(mark, name);