使用一种方法返回字符串和整数

时间:2012-04-26 09:20:24

标签: java

我正在尝试编写一个有方法考试标记的程序 这包含瞳孔类的对象和给出瞳孔名称的字符串。该方法应返回学生考试标记及其名称。如果有一个叫乔的学生,他们的考试成绩是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;
               }  
            }
        }

有人可以帮我回复带有学生姓名的考试吗?

5 个答案:

答案 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)

这个问题有两个答案:

  1. 使用Pair<E,K>课程。有几个可通过谷歌。这是捷径。
  2. 创建特定于您要返回的信息的保留对象。这是更清洁的方式,通常应该是首选。

答案 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);